Autor Wątek: [Delphi]Problem z przesyłaniem rekordu  (Przeczytany 1672 razy)

Offline Kawior

  • Użytkownik

# Maj 17, 2006, 23:07:59
Mam następujący problem:
Jak przesłać rekord
rec=record
map:array[1..2000] of integer;
tekst:string;
end;
kiedy tak zapisałem rekord wyskoczył mi następujący błąd(w cliencie):
invalid pointer operation

W necie wyczytałem że przesylanie stringów jest niebezpieczne, więc zamieniłem go na tablice charów:
rec=record
map:array[1..2000] of integer;
tekst:array[1..60] of char;
end;
To z kolei spowodowało że błąd wyskakuje w serverze:
acces violation at adress 0046FE40 'RP_SERVER.EXE'. Read of adress 01D18000.

Nie wiem co mam zrobić! Błędy występują w momencie kiedy próbuje odczytać wartość przesłanych informacji. Proszę o pomoc!

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Demon

  • Użytkownik

# Maj 18, 2006, 01:36:20
Daj kod wysyłający klienta i kod odbierający serwera, wtedy się zobaczy, bo puki co nic nie wynika z tego co napisałeś poza tym że poprawiłeś 1 błąd.

Offline Gorion

  • Użytkownik
    • Strona domowa

# Maj 18, 2006, 09:48:21
Domniemam, że używasz TClient/ServerSocket. Jeżeli nie to też może w tym być problem :D
Sprawdź ile tak naprawdę się wysyła z tego co chcesz wysłać.

if ClientSocket1.Socket.SendBuf(TwojBuffor,sizeof(TwojBuffor)) = sizeof(TwojBuffor) then
 messagebox(0,'Hahaha tu masz błąd ;P','Error',MB_OK or MB_ICONERROR);

Offline W0jciechZ

  • Użytkownik
    • WOJZAB Computers

# Lipiec 25, 2006, 09:42:17
W jakim sensie przesyłanie rekordów jest niebezpieczne?

Offline ziomber

  • Użytkownik

  • Zbanowany
# Listopad 09, 2006, 12:47:31
rec=record
map:array[1..2000] of integer;
tekst:string;
end;

string to tablcia dynamiczna szczerze tekst[0] zawierra dlugosc ;lancucha a tekst[1] pierwszy wyraz ze stringa trzeba nadac mu dlugosc tekst:string[256]; (mkasymalna dostepna) wtedy sie przesle na bank