AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy - Readbuffer/Writebuffer ?
Thema durchsuchen
Ansicht
Themen-Optionen

Indy - Readbuffer/Writebuffer ?

Offene Frage von "bernhard_LA"
Ein Thema von Gruber_Hans_12345 · begonnen am 16. Nov 2006 · letzter Beitrag vom 30. Jul 2015
Antwort Antwort
cwb38

Registriert seit: 6. Jan 2010
1 Beiträge
 
#1

Re: Indy - Readbuffer/Writebuffer ?

  Alt 11. Feb 2010, 16:36
Hi bbBowser,

einige Jahre später hatte ich nun auch dein Problem, konnte es aber erfolgreich lösen:
Wie in der Indy Dokumentation ersichtlich, wird die die Methode ReadBytes wie folgt definiert:

Delphi-Quellcode:
procedure ReadBytes(
var VBuffer: TIdBytes;
AByteCount: Integer;
AAppend: boolean = true
); virtual;
wobei gilt:

Zitat:
AAppend indicates that values extracted from the input buffer should be appended to existing data in VBuffer. When AAppend is False, any values in VBuffer are discarded during extraction of data from InputBuffer.
Das heißt für dich, dass du

AContext.Connection.IOHandler.ReadBytes(Buf, Sizeof(TClientFiles), false); aufrufen musst, damit das Record aktualisiert wird.

MfG
cwb38
  Mit Zitat antworten Zitat
bebo91

Registriert seit: 3. Okt 2014
2 Beiträge
 
#2

AW: Indy - Readbuffer/Writebuffer ?

  Alt 29. Jul 2015, 13:09
Hallo zusammen,

ich versuche mich auch gerade an einer ähnlichen Aufgabenstellung, allerdings funktioniert das bei mir noch nicht.
Der Record sieht wie folgt aus:
Code:
TTEst= record
  name: String;
  alter: Integer;
end;
Das Senden:
Code:
var
  lTest: TTEst;
begin
  lTest.name := 'bla bla';
  lTest.alter := 101;
  buf := RawToBytes(lTest, SizeOf(TTest));
  AContext.Connection.IOHandler.Write(buf);
end
Das Empfangen:
Code:
var
  lTest1: TTest;
begin
  IdTCPClient1.IOHandler.ReadBytes(buf, SizeOf(TTest), false);
  BytesToRaw(buf, lTest1, SizeOf(TTest));
end
Statt meinen überagenen Daten erhalte ich allerdings folgendes:
Code:
name:   #0#4#$09C5#0#0#0'ù'#0#$14''' '#0#4#$09C6#0#0#૨... (Ist ca. 1 Seite lang)
alter:   101 (das stimmt)
Hat jemand eine Idee, was ich hier falsch mache?

Viele Grüße

bebo91
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Indy - Readbuffer/Writebuffer ?

  Alt 29. Jul 2015, 13:12
.. funktioniert es, wenn Du aus dem String ein shortString machst?

Delphi-Quellcode:
TTEst= record
  name: String[25];
  alter: Integer;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Indy - Readbuffer/Writebuffer ?

  Alt 29. Jul 2015, 13:32
Name : String in einem Record speichert nur die Referenz und nicht den Inhalt...
Der eigentliche Stringinhalt ist also nicht im Record enthalten...
  Mit Zitat antworten Zitat
bebo91

Registriert seit: 3. Okt 2014
2 Beiträge
 
#5

AW: Indy - Readbuffer/Writebuffer ?

  Alt 29. Jul 2015, 13:58
.. funktioniert es, wenn Du aus dem String ein shortString machst?

Delphi-Quellcode:
TTEst= record
  name: String[25];
  alter: Integer;
end;
Grüße
Klaus
Danke für den Tipp, das funktioniert.

@Mavarik: klar, Anfängerfehler^^

Gibt es eine andere Möglichkeit, das beschriebene Verfahren zu verwenden, ohne alle Strings auf eine feste Länge setzen zu müssen?
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Indy - Readbuffer/Writebuffer ?

  Alt 29. Jul 2015, 14:04
Gibt es eine andere Möglichkeit, das beschriebene Verfahren zu verwenden, ohne alle Strings auf eine feste Länge setzen zu müssen?
Klar...

Bau die eine Funktion die Dir aus Deinem record ein ByteArray macht...

Delphi-Quellcode:
   TTest= record
            name : String;
            Alter: Integer;
            Class operator implicit(Const AMyTest : TTest): TBytes;
          end;

Geändert von Mavarik (29. Jul 2015 um 14:11 Uhr)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Indy - Readbuffer/Writebuffer ?

  Alt 30. Jul 2015, 08:29
helfen dir diese demos weiter ? alles in IN DY 10

http://sourceforge.net/projects/indy10clieservr/
  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 20:42 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