Ładny brzuch
Witam!
Pojawiam sie tutaj z kolejnym pytaniem .. mam nadzieje ze dla wielu ten problem to nei problem :D
Otoz chodzi mi o to ze zaczynajac watek w programie:
wynik = BeginThread(NULL, 0, Wyliczenia, this, 0, W_PD);
rozpoczyna sie watek czyli funkcja
int __fastcall Wyliczenia1(Pointer Parameter)
jak zrobic zeby rozpoczynajac watek wykonywala sie funkcja np.
int __fastcall Wyliczenia(AnsiString tekst)
ktora za parametr przyjmuje zmienna tekst ??
Mam z tym problem :| Licze na Wasza pomoc :) Pozdrowka
funkcja ThreadFunc ma z gory narzucona budowe i nie mozesz dac do BeginThread funkcji o innej budowie.
pozdrawiam
pepsi^no1
a czy istnieje moze jakis sposob ktorym mozna ominac ta niedogodnosc?? :D
ale co chcesz zrobic?
zawsze przeciez w funkcji obslugujacej watek mozesz wywolac co chcesz...
int __fastcall tFunc(Pointer Parameter) { inna_funkcja("jestem wesolym parametrem typu String :]"); }
pozdrawiam
pepsi^no1
chce zrobic tak ... mam funkcje ktora cos tam robi (na podstawie parametrow przekazywanej tej funkcji ... i teraz chcialbym zeby rozpoczynajac ten watek mog przelac funkcji ktora wykonuje sie podczas watku i wyslaj ja z jakis parametrem .. :)
Poza tym inne pytanie przy okazji mam .. jak zrobic serwer z wykorzystaniem TServerSocket wykorzystujac watki? :) Bardzo mile widziane sa wszelkie pomysly :D
z twoich przejrzystego wytlumaczenia ;) wyciagnalem wniosek ze chcesz przekazac do watku parametr tak? ;]
wiec mozesz to zrobic za pomoca jakiejs zmiennej globalnej w sensie ze przed wywolaniem watku do zmiennej globalnej String zm wpisujesz co chcesz a w funkcji kozystasz ze zmiennej zm, ale to sredni pomysl.
mozesz tez przeslac parametry na przyklad tak, ale nie wiem czy to do konca poprawny sposob ;)
struct sParams { String txt; int count; }; int __fastcall tFunc(Pointer Parameter) { sParams *ptr = (sParams *)Parameter; for(int i=0;i<ptr->count;i++) MessageBox(0,ptr->txt.c_str(),ptr->txt.c_str(),0); delete ptr; return 0; } void __fastcall TForm1::Button1Click(TObject *Sender) { sParams *ptr = new sParams; ptr->count = 3; ptr->txt = "elou :]"; BeginThread(NULL,0,tFunc,ptr,0,tID); }
pozdrawiam
pepsi^no1
Niestety nie dziala to tak jak chcialem .. ale i tak wielkie dzieki za informacje :D
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Pojawiam sie tutaj z kolejnym pytaniem .. mam nadzieje ze dla wielu ten problem to nei problem :D
Otoz chodzi mi o to ze zaczynajac watek w programie:
wynik = BeginThread(NULL, 0, Wyliczenia, this, 0, W_PD);
rozpoczyna sie watek czyli funkcja
int __fastcall Wyliczenia1(Pointer Parameter)
jak zrobic zeby rozpoczynajac watek wykonywala sie funkcja np.
int __fastcall Wyliczenia(AnsiString tekst)
ktora za parametr przyjmuje zmienna tekst ??
Mam z tym problem :| Licze na Wasza pomoc :) Pozdrowka
funkcja ThreadFunc ma z gory narzucona budowe i nie mozesz dac do BeginThread funkcji o innej budowie.
pozdrawiam
pepsi^no1
a czy istnieje moze jakis sposob ktorym mozna ominac ta niedogodnosc?? :D
ale co chcesz zrobic?
zawsze przeciez w funkcji obslugujacej watek mozesz wywolac co chcesz...
int __fastcall tFunc(Pointer Parameter) { inna_funkcja("jestem wesolym parametrem typu String :]"); }
pozdrawiam
pepsi^no1
chce zrobic tak ... mam funkcje ktora cos tam robi (na podstawie parametrow przekazywanej tej funkcji ... i teraz chcialbym zeby rozpoczynajac ten watek mog przelac funkcji ktora wykonuje sie podczas watku i wyslaj ja z jakis parametrem .. :)
Poza tym inne pytanie przy okazji mam .. jak zrobic serwer z wykorzystaniem TServerSocket wykorzystujac watki? :) Bardzo mile widziane sa wszelkie pomysly :D
z twoich przejrzystego wytlumaczenia ;) wyciagnalem wniosek ze chcesz przekazac do watku parametr tak? ;]
wiec mozesz to zrobic za pomoca jakiejs zmiennej globalnej w sensie ze przed wywolaniem watku do zmiennej globalnej String zm wpisujesz co chcesz a w funkcji kozystasz ze zmiennej zm, ale to sredni pomysl.
mozesz tez przeslac parametry na przyklad tak, ale nie wiem czy to do konca poprawny sposob ;)
struct sParams { String txt; int count; }; int __fastcall tFunc(Pointer Parameter) { sParams *ptr = (sParams *)Parameter; for(int i=0;i<ptr->count;i++) MessageBox(0,ptr->txt.c_str(),ptr->txt.c_str(),0); delete ptr; return 0; } void __fastcall TForm1::Button1Click(TObject *Sender) { sParams *ptr = new sParams; ptr->count = 3; ptr->txt = "elou :]"; BeginThread(NULL,0,tFunc,ptr,0,tID); }
pozdrawiam
pepsi^no1
Niestety nie dziala to tak jak chcialem .. ale i tak wielkie dzieki za informacje :D