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
zohan1

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

TCP Indy 10 SendReceiveRecords

  Alt 19. Aug 2011, 07:06
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

Geändert von zohan1 (19. Aug 2011 um 07:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

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

AW: TCP Indy 10 SendReceiveRecords

  Alt 19. Aug 2011, 07: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
 
#3

AW: TCP Indy 10 SendReceiveRecords

  Alt 22. Aug 2011, 07: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
 
#4

AW: TCP Indy 10 SendReceiveRecords

  Alt 22. Aug 2011, 07: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
 
#5

AW: TCP Indy 10 SendReceiveRecords

  Alt 22. Aug 2011, 13: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.622 Beiträge
 
Delphi 12 Athens
 
#6

AW: TCP Indy 10 SendReceiveRecords

  Alt 22. Aug 2011, 13: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
 
#7

AW: TCP Indy 10 SendReceiveRecords

  Alt 23. Aug 2011, 09: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
 
#8

AW: TCP Indy 10 SendReceiveRecords

  Alt 23. Aug 2011, 09: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
zohan1

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

AW: TCP Indy 10 SendReceiveRecords

  Alt 24. Aug 2011, 08:08
danke hat funktioniert
  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 19:42 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