... chodzi o to ze.....nie potrafie przeslac pakietu w takiej postaci...
Juz napisałem... Tak nie wyslesz, przy {$H+}/{$LONGSTRINGS ON} - domyslnym ustawieniu kompilatora... Wtedy string=ansistring i kazda zmienna tego typu to wskaznik do dynamicznie przydzielanego obszaru. Skoro jest to wskaznik, to wysyłając taki rekord wysyłasz 12 bajtów, które u odbiorcy są tylko śmieciami, bo na drugim kompie na pewno pod tymi adresami nie ma tekstu. Dlatego albo ustaw sobie {$h-}, wtedy string=shortstring, albo w deklaracji użyj string[rozmiar] (rozmiar<256)- to też bedzie shortstring (i to niezaleznie od stanu przełącznika). Shortstring jest statycznym typem danych. Przełącznik $H-/$LONGSTRINGS OFF powoduje, że stringi są traktowane tak jak w pascalu...
Tak wygląda twój rekord w pamieci:
-dla ansistring/string i $H+ (sizeof()=12 - sprawdz, jak nie wierzysz)
4 bajty wskaznik do nick
4 bajty wskaznik do haslo
4 bajty wskaznik do msg
- dla shortstring/string i $h- (sizeof()=768)
256 bajtów dla nick
256 bajtów dla haslo
256 bajtów dla msg
- dla string[] niezaleznie od $h (według twojego sposobu; sizeof()=256+18)
9 bajtow dla nick
9 bajtow dla haslo
256 bajtow dla msg
Jesli chcesz wysylac przy $h+, to musisz sobie zapamietac, ze trzeba uzyc length(string) i że pod addr(string[1]) znajduja się dane. Ale lepszym sposobem jest uzycie shortstringa, bo wtedy nie musisz kodowac dodatkowo dlugosci przesylanych danych.