Hi,
ich bastel gerade daran ein simples, zweidimensionales String-Array (0..20,0..20) per DXPlay-Kompo an andere zu verschicken. Die Verbindung etc. ist alles bereits gemacht und funktioniert auch. Auch Textnachrichten und Co lassen sich verschicken. Nur Arrays nicht?
Folgendes habe ich als TDXLevel unter Type deklariert:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Const DX_ChatMessage = 1; DX_ChatCommand = 2; DX_Playerstatus = 3; DX_Level = 4;
Type TDXLevel = Record dwType: DWORD; PlayerCount: Integer; LevelBuild: Array[0..20,0..20] of String; end; |
Und hier will ich das Array verschicken. Die Variabel MyArray ist bereits gefüllt, habe ich auch kontrolliert.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| // beim Klicken auf den Button VAR LvlMsg: ^TDXLevel; MsgSize, i, j: Integer;
begin MsgSize := SizeOF(TDXLevel); GetMem(LvlMsg,MsgSize); LvlMsg.dwType:=DX_Level;
LvlMsg.PlayerCount:=2;
For i := 0 To 20 Do For j := 0 To 20 Do LvlMsg.LevelBuild[i,j]:=MyLevel[i,j];
DXPlay.SendMessage(DPID_AllPlayers,LvlMsg,MsgSize); FreeMem(LvlMsg); end;
// bei procedure DXPLayMessage.... ... if DXPlayMessageType(Data)=DX_Level then ShowMessage('Angekommen'); ... |
Irgendwas muss hier falsch sein, weil sobald der Host auf den Button klickt und die Nachricht versendet werden soll bekomme ich von dem anderen PC eine Fehlermeldung:
"Access violation at address 00404366 in module ... Read of address 7472616C."
Sprich das Programm greift auf eine Adresse zu wo nix steht bzw. er nicht zugreifen kann. Schätzungsweise ist die Länge der "Nachricht" falsch, aber ich wüsste nicht wie ich die Länge sonst ermitteln sollte...
Ich hoffe mir kann hier jemand helfen
Thx schonmal!
Knuddelbaer