Witam
Dla wlasnej satysfakcji robie bardzo prosty komunikator sieciowy. Uzywam do tego srodowiska BCB 6 i oczywiscie socketow. problem pojawia sie przy odbieraniu danych wysylanych od drugiego uzytkownika.
pierwsza wiadomosc zazwyczaj dociera w takiej formie jak zostala wyslana, natmoniast nastepne sa jakas mieszanka poprzednich wiadomosci, i nie mogo znaleŹĆ zadnej zaleznosci dlaczego tak sie dzieje. Raz pokazuje sie wiadomosc prawidlowa a raz wyslana pare sekund wczesniej oto fragmet kodu.
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
char *Wiadomosc; // wskaznik na przyszla tabilce znakow
int dlugosc_wiad; //zmienna pomocnicza zliczajaca ilosc znakow
Wiadomosc = new char[255];
dlugosc_wiad = Socket->ReceiveLength(); //sprawdznie liczby znakow przychodzacej wiadomosci
Socket->ReceiveBuf(Wiadomosc,dlugosc_wiad+1); //zapisywanie do tablicy znakowej odebranego tekstu
String Wyswietlanie = Wiadomosc; //konwersja na stringa alby moc swobodnie wyswietlic w memo
Memo1->Lines->Add(Wyswietlanie);
delete Wiadomosc;
}
czasami wiadomosci zawieraja nazwy komponetow programu, np " Button1" itd. Wyglada jakby C++ mial jakis problem z nadpisywaniem danych na stosie. No ale uzywam "delete" wiec za kazdym razem pamiec jest zwalniana, a moze nie powinienem tego robic?