AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Array mit INDY (TCP) übertragen
Thema durchsuchen
Ansicht
Themen-Optionen

Array mit INDY (TCP) übertragen

Offene Frage von "Martin W"
Ein Thema von Martin W · begonnen am 3. Feb 2005 · letzter Beitrag vom 3. Feb 2005
Antwort Antwort
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#1

Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 16:22
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
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 16:29
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.
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#3

Re: Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 17:31
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!!!
  Mit Zitat antworten Zitat
Zottel
(Gast)

n/a Beiträge
 
#4

Re: Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 17:34
wenn mich meine erinnerung nicht täuscht, dürfen es bei einen writebuffer keine offenen strings sein, oder?
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#5

Re: Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 17:56
Was sind offene Strings?
  Mit Zitat antworten Zitat
Zottel
(Gast)

n/a Beiträge
 
#6

Re: Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 19:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 19:18
Neee, ist richtig. Aber 5 Zeichen mehr dürfens sein, also bis zu 255.

Sonst muss man Streams benutzen ...
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#8

Re: Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 19:18
Was soll die [250] hinter den a: string bedeuten?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

Re: Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 19:25
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)
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#10

Re: Array mit INDY (TCP) übertragen

  Alt 3. Feb 2005, 19:28
In nem String stehen mehr als 255 Zeichen drin... wie kann ich das jetzt übertragen?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz