Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Array mit INDY (TCP) übertragen (https://www.delphipraxis.net/39500-array-mit-indy-tcp-uebertragen.html)

Martin W 3. Feb 2005 15:22


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 ;-)

Dax 3. Feb 2005 15:29

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.

Martin W 3. Feb 2005 16:31

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!!!

Zottel 3. Feb 2005 16:34

Re: Array mit INDY (TCP) übertragen
 
wenn mich meine erinnerung nicht täuscht, dürfen es bei einen writebuffer keine offenen strings sein, oder?

Martin W 3. Feb 2005 16:56

Re: Array mit INDY (TCP) übertragen
 
Was sind offene Strings?

Zottel 3. Feb 2005 18:15

Re: Array mit INDY (TCP) übertragen
 
ich weiss nicht, ob das so richtig war, aber dein record müßte so aussehen:

Delphi-Quellcode:
type SID_management = record
                    a: string[250];
                    b: string[250];
                    c: Integer;
                  end;

var
  verwaltung: array[0..8000] of SID_management;
ich hatte probleme, wenn ich strings variabler länge genommen habe.
Bitte verbesser mich einer, wenn das falsch ist. kann aber auch sein, ds ich das jetzt mit typisierten dateien verwechsel.

jfheins 3. Feb 2005 18:18

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 ...

Martin W 3. Feb 2005 18:18

Re: Array mit INDY (TCP) übertragen
 
Was soll die [250] hinter den a: string bedeuten?

jfheins 3. Feb 2005 18:25

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)

Martin W 3. Feb 2005 18:28

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