![]() |
eine Frage zu dyn . Array im Netzwerk
Ich möchte einen client und einen Server schreiben , die beide ein gleich großes dyn. Array haben.
Nach dem das Passiert ist, soll der server den Inhalt seines dyn. array an den client verschicken.
Delphi-Quellcode:
Das Programm stürzt dabei immer ab , und wir wissen nicht warum.
////////////////////////client///////////////////////////////////
type Datenpack2 = Record Chatchannels : Array of String[20]; index2:integer; end; ... var rec:datenpack2 clientsocket2.Socket.ReceiveBuf(rec,sizeof(rec)); setlength(rec.Chatchannels,rec.index2); clientsocket2.Socket.ReceiveBuf(rec,sizeof(rec)); for i:=0 to high(rec.Chatchannels)-1 do memo1.lines.Add(rec.Chatchannels[i]); //////////server///////////////////////// rec:datenpack2; socket.ReceiveBuf(rec,sizeof(rec)); rec.index2:=anZchat;// ist größe des arrays was beide haben sollen for i := 0 to initServer.Socket.ActiveConnections-1 do initserver.Socket.Connections[i].SendBuf(rec,sizeof(rec)); setlength(rec.Chatchannels,anZchat);/// setzt sein array auf die gleiche größe log.Lines.add('Eingehende Verbindung'); for j:= 0 to high(rec.Chatchannels)-1 do rec.Chatchannels[j]:=Chatliste[j];/////übergibt seinen Inhalt an das dynarray for k := 0 to initserver.Socket.activeConnections-1 do // verschickt es nun wieder erneut initserver.Socket.Connections[k].SendBuf(rec,sizeof(rec)); Da ich und meine Gruppe blutige Anfänger auf diesem Gebiet sind , hoffen wir hier Hilfe zu finden Danke im Voraus mfg SIn [edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit] |
Re: eine Frage zu dyn . Array im Netzwerk
SizeOf(rec) ergibt 8, da ChatChannels nur ein Pointer auf das Array ist. Ihr übertragt somit also nur diesen Pointer, aber nicht den Inhalt des Arrays.
Delphi-Quellcode:
MfG,
type
TChatChannel = string[20]; TDatenPack = record ChatChannels: array of TChatChannel; Index2: Integer; end; procedure SaveDatenPackToStream(Pack: TDatenPack; AStream: TStream); begin AStream.Write(Pack.Index2, SizeOf(Integer)); AStream.Write(Pack.ChatChannels[0], SizeOf(TChatChannel) * Pack.Index2); end; procedure LoadDatenPackFromStream(AStream: TStream): TDatenPack; begin AStream.Read(Result.Index2, SizeOf(Integer)); SetLength(Result.ChatChannels, Result.Index2); AStream.Read(Result.ChatChannels[0], SizeOf(TChatChannel) * Result.Index2); end; Tryer |
Re: eine Frage zu dyn . Array im Netzwerk
Danke dir. :-D
mfg Sin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz