TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
[programowanie] Pętelka w C++ i przeniesienie jej do C# , Soulburner 26/03/09 20:40 Dłubię sobie taki mały programik do odtwarzania radia internetowego i wpadłem na pomysł, aby wczytywał dane sobie z pliki txt/ini.
Programowałem troszeczkę wcześniej w C++, dlatego kodzik wczytujący dane do macierzy napisałem pierwej tam. Wymodziłem takie coś:
---
float button[100]; //numer przycisku, pod którym siedzi dane radio; nieużywane w programie, informacyjnie do edycji pliku
string value[100]; //adres streamu
string name[100]; //nazwa streamu oraz przycisku
ifstream dane ("dane2.txt");
ofstream wyjscie("wyjscie2b.txt");
int ile=0;
while(dane >> button[ile] >> value[ile] >> name[ile])
{
ile++;
}
ile--;
for (int i=0; i<ile+1; i++)
{
//button[i] = value[i];
cout<<"button["<<i<<"] = "<<value[i]<<" = "<<name[i]<<endl;
}
cout<<"value0 = "<<value[0];
cout<<"\n\n";
cout<<"Przycisk pierwszy ("<<button[0]<<") to link "<<value[0]<<" o nazwie "<<name[0]<<endl;
---
Działa toto zacnie, czyli robi, co ma robić. Potem przeszedłem do Visual Studio 2008 Express i zacząłem modyfikować kod. Dość szybko napotkałem przeszkodę:
StreamReader dane = new StreamReader("data.txt");
int [] button; //numer przycisku, pod którym siedzi dane radio;
string [] value; //adres streamu
string [] name; //nazwa streamu oraz przycisku
int ile = 0;
//dotąd zmiany są delikatne i łatwo można się ich domyśleć
while (dane >> button[ile] >> value[ile] >> name[ile]) //tutaj zonk...
{
ile++;
}
ile--;
---
Kompilator Visual Studio mówi, że operator >> w tym miejscu nie może być zastosowany. Dostałem jakiegoś zaćmienia umysłu i nie mogę wymyśleć innej pętli czyniącej to samo.
Pytania:
1) czym zastąpić operatory >> w tej pętli? Musi istnieć jakiś odpowiednik w C#...
2) jak inaczej sformułować tą pętlę, aby była łatwiejsza przy przenoszeniu między językami?
Z góry dzięki za wszelką pomoc :)You must gather your party before
venturing forth. - acha , Soulburner 26/03/09 20:41
oczywiście w C++ powinien być int zamiast float, ale jednocześnie robiłem jakiś chory program na zajęcia z metod numerycznych i mogło mi się pomylić ;)You must gather your party before
venturing forth. - [;..;] , GesTee 26/03/09 23:04
hmmm spróbuj moze zamiast cin/cout wyrobic nawyk printf/scanf
printf ("costam %s", zmienna_z_napisem);
scanf("%s", &zmienna_do_ktorej_wczytujesz);
ble ble chyba czaisz
jest jeszcze takie cuś jak "Console.WriteLine();" ale niewiem czy to cos ci pomorze, ten board to nie miejsce na tapie pytania ;p jak bys mial dylemat z wyborem pralki albo opiekacza to juz szybciej:) - hehe , Soulburner 27/03/09 00:07
dzięki za odpowiedź, niestety to nie pomoże - chodzi tylko o pętlę wrzucającą kolejne znaki z każdej linii pliku txt do odpowiednich macierzy w zmiennych. Program jest okienkowy, więc Console.WriteLine() itp. nie ma zastosowania - zresztą, chodzi tylko o tą jedną pętlę, która jest niezależna od tego, czy program jest konsolowy czy okienkowy.
Faktycznie pójdę z tym problemem na jakieś forum o programowaniu - sądziłem jednak, że skoro są tu specjaliści od AGD, to znajdzie się jakiś mastah kodowania ;)You must gather your party before
venturing forth. - hmm , bartek_mi 27/03/09 00:24
1.
w c# inaczej otwierasz pliki txt. to co masz to C++sowe paskudstwo, ktore sie na nic normalnego nie przeniesie. do tego to jakis dirty-hack, dajacy +1 do c++_hacking_masta
wczytujesz linia po lini a potem juz zabawa stringami (na przyklad split) - masz jakis format pliku
wszystko jest w System.IO
przyklad:
http://msdn.microsoft.com/...mreader.readline.aspx
jak chcesz pisac w c# to zaprzyjaznij sie z MSDN - lepszego helpa nie ma i nie bedzie :)
do tego codeguru i codeproject i jazda
do tego ta "macierz" to slaba ciut - jak na moje oko to 3 tablice :)
zrob no klase i liste (System.Collections.ArrayList badz List<T>
2.
jak masz aplikacje okienkowa to zrob forme z labelka i na nich mozesz pisac. (label1.Text = ""; )
jak chcesz cos raz kiedys testowo wywalic to masz MessageBox.Show("");
w debugu mozesz pisac na output System.Diagonostic.Degug.WriteLine("");
a podstawa to ListView do ktorych wrzucasz element ListVeiwItem
mozesz jeszcze uzyc datagrida ale to buractwo :)
to tak na szybko - chyba nic nie pokrecilem :)dzisiaj jest jutrzejszym wczoraj - dzięki za porady , Soulburner 27/03/09 11:04
widać od razu, że z programowaniem zbyt często się nie stykam, stąd mylenie pojęć i nieświadome używanie hacków w cpp zamiast czegoś normalnego ;)
MSDN, oczywiście, jest mega-potężną bazą, tylko za chorobę nie mogłem znaleźć jak zmieniać głośność "podpiętego" WMP, co znalazłem dopiero w jakimś tutorialu VB na którymś forum... ale może po prostu nie umiem szukać ;)You must gather your party before
venturing forth.
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|