![]() |
Array mit INDY (TCP) übertragen
Hi,
Also ich hab nen Problem... Erst mal ein wenig Source: Mein Server:
Delphi-Quellcode:
type SID_management = record
a: string; b: string; c: Integer; end; var verwaltung: array[0..8000] of SID_management; Mein Client:
Delphi-Quellcode:
type SID_management = record
a: string; b: string; c: Integer; end; var verwaltung: array[0..8000] of SID_management; Verbunden sind die beiden über nen IdTCPClient bzw. IdTCPServer von INDY. Wie bekomme ich jetzt den Inhalt des Server- records so kopiert, das im Client- Record anschließend das selbe steht? Die Record gibt es beim Client und Server je 8001 mal... Danke schonmal im Vorraus... Gruß Martin ;-) |
Re: Array mit INDY (TCP) übertragen
Das kannst du ganz einfach mit WriteBuffer machen. Wenn mich meine Erinnerung nicht täuscht, musst du dabei nur (für deinen Fall) WriteBuffer(verwaltung, length(verwaltung)*sizeof(SID_Management)); schreiben. Falls du nicht genau weisst, wann das Array übertragen werden soll, solltest du vorher dem Client noch mitteilen, das jetzt das Array kommt und es dann entsprechend mit ReadBuffer lesen.
|
Re: Array mit INDY (TCP) übertragen
Könntest du mir die Beispielcodes dafür mal schnell schreiben? Also einmal zum schreiben (sever) und leen (client)... Schon mal danke für deine Antwort!!!
|
Re: Array mit INDY (TCP) übertragen
wenn mich meine erinnerung nicht täuscht, dürfen es bei einen writebuffer keine offenen strings sein, oder?
|
Re: Array mit INDY (TCP) übertragen
Was sind offene Strings?
|
Re: Array mit INDY (TCP) übertragen
ich weiss nicht, ob das so richtig war, aber dein record müßte so aussehen:
Delphi-Quellcode:
ich hatte probleme, wenn ich strings variabler länge genommen habe.
type SID_management = record
a: string[250]; b: string[250]; c: Integer; end; var verwaltung: array[0..8000] of SID_management; Bitte verbesser mich einer, wenn das falsch ist. kann aber auch sein, ds ich das jetzt mit typisierten dateien verwechsel. |
Re: Array mit INDY (TCP) übertragen
Neee, ist richtig. Aber 5 Zeichen mehr dürfens sein, also bis zu 255.
Sonst muss man Streams benutzen ... |
Re: Array mit INDY (TCP) übertragen
Was soll die [250] hinter den a: string bedeuten?
|
Re: Array mit INDY (TCP) übertragen
Dass da maximal 250 Zeichen 'reinpassen
Und wenn du Strings variabler Länge hast, ist das nur ein Pointer, der auf die Daten "zeigt". Wenn du den Versendest stehen beim Empfänger aber zumindest nicht dieselben Daten, und es kracht. Deshalb musst du, um es dir einfach zu machen, Die Länge definieren. Bedenke aber, dass dann immer alle 255 Zeichen übertragen werden ... (auch wenn nur ein Leerzeichen drin ist) |
Re: Array mit INDY (TCP) übertragen
In nem String stehen mehr als 255 Zeichen drin... wie kann ich das jetzt übertragen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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