AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy TCP und Write-/ReadStream-Methode
Thema durchsuchen
Ansicht
Themen-Optionen

Indy TCP und Write-/ReadStream-Methode

Ein Thema von OrallY · begonnen am 16. Sep 2003 · letzter Beitrag vom 17. Sep 2003
Antwort Antwort
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#1

Indy TCP und Write-/ReadStream-Methode

  Alt 16. Sep 2003, 16:38
Hallöchen. Nachdem Meflin in diesem Thread nachgefragt hat, wie man Dateien über TCP und den Indys verschickt, habe ich folgendes Beispiel gepostet. Doch bekomme ich immer bei der ReadStream-Methode einen EReadError ("Stream read error").

Da ich als letztes in den Thread von Meflin gepostet habe und dieser nicht als unbeantwortet gekennzeichnet ist, hab ich jetzt einfach einen neuen Thread aufgemacht, um auf das bis dato ungelöste Problem aufmerksam zu machen.

(Ich war der Ansicht, dass beim alten Thread leicht der Glaube entstehen könnte, dass er beantwortet ist. Und weil ich Meflins Problem lösen will, was nun auch zu meinem geworden ist, hab ich jetzt die Initiative ergriffen. Wenn die Moderatoren anderer Meinung sind, bitte :mrgeen

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fs: TFileStream;
begin
  if not OpenDialog1.Execute then exit;
  with IdTCPClient1 do
  begin
    fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite);
    Connect;
    try
      WriteStream(fs);
    finally
      Disconnect;
      fs.Free;
    end;
  end;
end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  fs: TFileStream;
begin
  if not SaveDialog1.Execute then exit;
  fs := TFileStream.Create(SaveDialog1.Filename, fmCreate or fmShareExclusive);
  with AThread.Connection do
    try
      ReadStream(fs);
    finally
      Disconnect;
      fs.Free;
    end;
end;
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Indy TCP und Write-/ReadStream-Methode

  Alt 17. Sep 2003, 10:31
Hi,

versuch mal in der procedure Button1Click folgendes einzubauen :

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  fs: TFileStream;
begin
  if not OpenDialog1.Execute then exit;
  with IdTCPClient1 do
  begin
    fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite);
    try
      Connect;
      if Connected then begin
        try
          // Write Buffer öffnen
          OpenWriteBuffer;
          // Stream in Buffer schreiben
          WriteStream(fs);
          CloseWriteBuffer;
          // Buffer schliessen, Buffer wird dann automatisch abgeschickt
        except // fehlermeldung end;
      end;
    finally
      Disconnect;
      fs.Free;
    end;
  end;
end;
Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#3

Re: Indy TCP und Write-/ReadStream-Methode

  Alt 17. Sep 2003, 16:07
Danke, aber hat leider nix geholfen. Es tritt immer noch der selbe Fehler auf .

(Nach Indy-Hilfe modifiziert):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fs: TFileStream;
begin
  if not OpenDialog1.Execute then exit;
  with IdTCPClient1 do
  begin
    fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite);
    Connect;
    try
      OpenWriteBuffer;
      try
        WriteStream(fs);
        CloseWriteBuffer;
      except
        CancelWriteBuffer;
        raise;
      end;
    finally
      Disconnect;
      fs.Free;
    end;
  end;
end;
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#4

Re: Indy TCP und Write-/ReadStream-Methode

  Alt 17. Sep 2003, 16:25
Lösung hier: http://www.delphipraxis.net/internal...?p=72324#72324
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Indy TCP und Write-/ReadStream-Methode

  Alt 17. Sep 2003, 16:28
Moin OrallY,

probier's mal mit fmOpenReadWrite beim FileStream.

Ich hab' an der gleichen Stelle einen MemoryStream, und damit geht's.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#6

Re: Indy TCP und Write-/ReadStream-Methode

  Alt 17. Sep 2003, 16:38
Ich hatte das auch schon mit einem MemoryThread probiert, aber das hat bei mir nicht geklappt .
Eine Lösung des Problems gibts, wenn du dem Link folgst. So funktionierts, auch wenn ich den Grund nicht kenne :
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  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 13:50 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