AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stream Read Error bei TMemoryStream.Seek

Ein Thema von cheatzs · begonnen am 10. Aug 2004 · letzter Beitrag vom 10. Aug 2004
Antwort Antwort
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#1

Stream Read Error bei TMemoryStream.Seek

  Alt 10. Aug 2004, 10:12
Hi Leute,
hab einen ungewöhnlichen Fehler beim Verarbeiten von Eingehenden Nachrichten über ein TIdTcpServer.
Es wird der Fehler "Stream Read Error" bei einem Datenverarbeitendem Stream (nicht der Stream mit dem die Daten empfangen werden) angezeigt. Dabei zeigt der Compiler auf die Zeile:

ActClient^.DataStream.Seek(0,soFromBeginning); Ich habe keine erkennbaren Fehler gefunden.

Ich vermute allerdings, dass der Fehler aufgrund der verschiedenen Threads beim Empfang verursacht wird.
Hat sich nur ein Computer mit dem Server verbunden, klappt alles wunderbar. Bei schon 2 Computern tritt nach einer Weile (wahrscheinlich wenn sich beide zufällig mal zur selben Zeit anmelden) dieser Fehler auf.

Ich hatte gehofft diesen Fehler zu beheben, indem ich einen eigenen DataStream für jeden verbundenen Computer erstellt habe. Trotzdem tritt er noch auf.

Habt ihr eine Idee, weshalb überhaupt ein Read Stream Error bei der Prozedur Seek aufgerufen werden kann? Oder spinnt womöglich der Compiler und es ist eine andere Zeile?

Viel Dank im Vorraus.

Bye
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#2

Re: Stream Read Error bei TMemoryStream.Seek

  Alt 10. Aug 2004, 16:54
Hi Leutz,

es liegt nich an dem Seek, sondern an dem Befehl COPYFROM, der direkt darüber steht:

ActClient^.DataStream.CopyFrom(ActClient^.ReceiveStream,ActClient^.ReceiveStream.Size-(SizeOf(Word)+SizeOf(Cardinal))); Leider weiß ich immer noch nicht, warum...

Bye
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: Stream Read Error bei TMemoryStream.Seek

  Alt 10. Aug 2004, 17:01
Wiel der andere stream warscheinlich lerr ist oder am ende steht dann kommt nämlich die meldung
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#4

Re: Stream Read Error bei TMemoryStream.Seek

  Alt 10. Aug 2004, 17:08
Delphi-Quellcode:
    ActClient^.ReceiveStream.Seek(0,soFromBeginning);
    ActClient^.ReceiveStream.Read(cReceiveLength,SizeOf(Cardinal));
    ActClient^.ReceiveStream.Read(wCommandID,SizeOf(Word));
    ActClient^.ReceiveStream.Seek(SizeOf(Word)+SizeOf(Cardinal), soFromBeginning);
    ActClient^.DataStream.CopyFrom(ActClient^.ReceiveStream,ActClient^.ReceiveStream.Size-(SizeOf(Word)+SizeOf(Cardinal)));
    ActClient^.DataStream.Position := 0;
Wie du sehen kannst, stelle ich die Position des ReceiveStream vorher auf die gewünschte Position, sodass niemals der zu kopierende Bereich fehlerhaft sein kann(zu groß oder zu klein).
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  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 23:23 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