![]() |
TCP Indy 10 SendReceiveRecords
kann mir einer erklären wie das auf indy 10 geht hab schon die demos funktionieren aber leider nur auf indy 9 und da 10 kein so ein demo hat würd ich mich freuen wenns mir einer erklärt :)(Delphi 2006)
mfg zohan1 EDIT// Mien record einthält strings sowie integer und CRC zur kontrolle hätte mir gedacht ich schrieb alles in ein Stream aber wie mach ich das btw wie transformier ich dann den stream in ein record zurück :S |
AW: TCP Indy 10 SendReceiveRecords
|
AW: TCP Indy 10 SendReceiveRecords
hat da einer ein bespiel? wäre ganz nützlich denn ich konnte mich mit theorie alleine nicht einen richtigen lösungsweg machen :S
|
AW: TCP Indy 10 SendReceiveRecords
Auf der schreibenden Seite erzeugst du einen TWriter und schreibst seriell die Felder deines Records rein.
Delphi-Quellcode:
Und auf der anderen Seite das gleiche Spiel mit TReader.
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 |
AW: TCP Indy 10 SendReceiveRecords
also irgenwas mach ich falsch beim lesen
Code:
Fehler:= Zugriffsverletzung der Server.exe :(
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; kann mir einer helfen? |
AW: TCP Indy 10 SendReceiveRecords
Zitat:
|
AW: TCP Indy 10 SendReceiveRecords
ups xD blöder fehler aber jez hab ich ein Stream-Lesefehler :( (sry aber mit Streams arbeite ich jez das erste mal :()
|
AW: TCP Indy 10 SendReceiveRecords
Wahrscheinlich hast du den Stream noch nicht "zurückgespult".
Delphi-Quellcode:
So einen Stream musst du dir wie eine Videokassette vorstellen. Wenn er beschrieben/gelesen wird, ändert sich die Position des Bandes/die Postition-Property.
Stream.Seek(0, soFromBeginning)
So auch in deinem Fall. Du liest die Daten aus der Verbindung in den Stream. Dadurch steht die Position am Ende.
Code:
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.
[01010101010101]
^ |
AW: TCP Indy 10 SendReceiveRecords
danke hat funktioniert :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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