Więc mam sobie
TField = packed record
Surface: Word;
AlphaSurface: Word;
OnGround: Byte;
Reserved: Byte;
Prop: Byte;
end;
PMiniBuffer = ^TMiniBuffer;
TMiniBuffer = array[0..9,0..9] of TField;
TTemp = record
ID: Byte;
Data: TMiniBuffer;
EOT: Byte;
end;
Otóż przesyłam sobie tą tablicę jako buforek pewnien. O tak o (Buf to PMiniBuffer)
Buf := S.GrabMap(X, Y);
Temp.ID := 2;
Temp.Data := Buf^;
Temp.EOT := 255;
ServSock.Socket.Connections[ID].SendBuf(Temp, SizeOf(Temp))
(ID i EOT potrzebne mi są jako typ oraz znak końca ciągu danych)
http://www.sheitar.iglu.cz/debug/debug1.gif <- dane przed wysłaniem, wsio pieknie miodzio
Przy odbieraniu (poprzez RecieveText) odczytuję owe ID a potem szukam końca transmisji, ID służy do wyboru czynności, znak #255 jest kasowany, podobnież ID. Ostatecznie w stringu Text mam cały przesłany bufor, co wygląda tak jak poniżej.
http://www.sheitar.iglu.cz/debug/debug2.gif <- dane po odebraniu w stringu
No i niby ok, ale po próbie przeniesienia tych danych w stringu do owej tablicy powstają niewłaściwe dane.
if MapBuf = nil then New(MapBuf);
CopyMemory(MapBuf, @Text, Length(Text));
MapBuf to nic innego jak PMiniBuffer. Po przeniesieniu danych wyglądają one tak
http://www.sheitar.iglu.cz/debug/debug3.gif <- dane po przeniesieniu do bufora ze striinga.
Załamka mnie już bierze :P pewnie jakiś oczywisty błądzik robię tylko że nie wiem jaki.
PLX HALP! Jestem n00bek :P