AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TCP Indy 10 SendReceiveRecords
Thema durchsuchen
Ansicht
Themen-Optionen

TCP Indy 10 SendReceiveRecords

Ein Thema von zohan1 · begonnen am 19. Aug 2011 · letzter Beitrag vom 24. Aug 2011
Antwort Antwort
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#1

AW: TCP Indy 10 SendReceiveRecords

  Alt 19. Aug 2011, 06:20
Zum serialisieren sind die Klassen Delphi-Referenz durchsuchenTStreamReader und Delphi-Referenz durchsuchenTStreamWriter ganz praktisch
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
zohan1

Registriert seit: 18. Aug 2011
8 Beiträge
 
#2

AW: TCP Indy 10 SendReceiveRecords

  Alt 22. Aug 2011, 06:06
hat da einer ein bespiel? wäre ganz nützlich denn ich konnte mich mit theorie alleine nicht einen richtigen lösungsweg machen :S
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

AW: TCP Indy 10 SendReceiveRecords

  Alt 22. Aug 2011, 06:18
Auf der schreibenden Seite erzeugst du einen TWriter und schreibst seriell die Felder deines Records rein.
Delphi-Quellcode:
var
  w : TWriter;
  ms : TMemoryStream;
begin
  ms := TMemoryStream.Create;
  w := TWriter.Create(ms, 1000);
  w.WriteInteger(MeinRecord.IntField);
  w.WriteString(MeinRecord.StringField);
  w.Free;
  Indy.WriteStream(ms);
  ms.Free;
end
Und auf der anderen Seite das gleiche Spiel mit TReader.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
zohan1

Registriert seit: 18. Aug 2011
8 Beiträge
 
#4

AW: TCP Indy 10 SendReceiveRecords

  Alt 22. Aug 2011, 12:21
also irgenwas mach ich falsch beim lesen

Code:
  Size := StrToInt(ReceiveCommand(AContext));
        AContext.Connection.IOHandler.ReadStream(ms, Size, False);
        ms := TMemoryStream.Create;
        w := TReader.Create(ms, 1000);
        Rec.Acknowledge:= w.readInteger;
        Rec.FilePath:=w.readString;
        Rec.Command:=w.readString;
        w.Free;
        ms.Free;
Fehler:= Zugriffsverletzung der Server.exe

kann mir einer helfen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#5

AW: TCP Indy 10 SendReceiveRecords

  Alt 22. Aug 2011, 12:25
Zitat:
Delphi-Quellcode:
AContext.Connection.IOHandler.ReadStream(ms, Size, False);
ms := TMemoryStream.Create;
Du willst etwas befüllen, was Du anschließend überhaupt erst erzeugst?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
zohan1

Registriert seit: 18. Aug 2011
8 Beiträge
 
#6

AW: TCP Indy 10 SendReceiveRecords

  Alt 23. Aug 2011, 08:21
ups xD blöder fehler aber jez hab ich ein Stream-Lesefehler (sry aber mit Streams arbeite ich jez das erste mal )
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#7

AW: TCP Indy 10 SendReceiveRecords

  Alt 23. Aug 2011, 08:39
Wahrscheinlich hast du den Stream noch nicht "zurückgespult". Stream.Seek(0, soFromBeginning) So einen Stream musst du dir wie eine Videokassette vorstellen. Wenn er beschrieben/gelesen wird, ändert sich die Position des Bandes/die Postition-Property.
So auch in deinem Fall. Du liest die Daten aus der Verbindung in den Stream. Dadurch steht die Position am Ende.
Code:
[01010101010101]
              ^
Wenn du dann dem Stream sagst: Lies mal bitte (z.B.) 4 Byte, gibts nen Fehler, weil ab der aktuellen Position keine 4 Byte verfügbar sind.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  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 08:37 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