Autor Beitrag
hibbert
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: Di 14.02.06 20:16 
Hi,
ich habe leider noch nirgends Demos für Indy10 gefunden :evil: Naja, aber nun zu meinem Problem:
Ich habe Delphi 2005 Personal und möchte nun gerne mit Indy Dateien über das Internet verschicken. Mit Indy9 ging das so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
with IdTCPClient1 do
  begin
    fs := TFileStream.Create(filename, fmOpenRead or fmShareDenyWrite); //Datei in FileStream einlesen
    Connect;  //und Verbindung herstellen
    try
      OpenWriteBuffer; //stellt sicher, dass alle Daten versendet werden
      try
        WriteStream(fs, true, true, 0); {das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird}
        CloseWriteBuffer;
      except
        CancelWriteBuffer;
        raise;
      end;
    finally
      Disconnect;
      fs.Free;
    end;

Nur leider funktioniert dieser Code mit indy10 nicht mehr.

Beliebte Meldungem vom Compiler sind:
Der Compiler hat folgendes geschrieben:
[Fehler] Unit1.pas(131): E2003 Undefinierter Bezeichner: 'OpenWriteBuffer'
[Fehler] Unit1.pas(133): E2003 Undefinierter Bezeichner: 'WriteStream'
[Fehler] Unit1.pas(134): E2003 Undefinierter Bezeichner: 'CloseWriteBuffer'
[Fehler] Unit1.pas(136): E2003 Undefinierter Bezeichner: 'CancelWriteBuffer'

wie kann ich nun mit Indy10 Dateien über das Internet verschicken ?

thx hibbert

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 14.02.06 20:32 
Alle Prozeduren zur Datenübertragung sind nun in der Klasse IOHandler untergebracht, schau mal nach, ob es dann funktioniert. Einfach IOHandler. vor die fraglichen Prozeduren stellen.
hibbert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: Di 14.02.06 20:40 
user profile iconUGrohne hat folgendes geschrieben:
Einfach IOHandler. vor die fraglichen Prozeduren stellen.

mhh sry weiß jetzt nicht genau was du damit meinst. Hört sich einfach an, ich weiß jetzt aber nicht was du meinst :oops:

hibbert

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 14.02.06 20:43 
Versuch das ;-)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
with IdTCPClient1 do
  begin
    fs := TFileStream.Create(filename, fmOpenRead or fmShareDenyWrite); //Datei in FileStream einlesen
    Connect;  //und Verbindung herstellen
    try
      IOHandler.OpenWriteBuffer; //stellt sicher, dass alle Daten versendet werden
      try
        IOHandler.WriteStream(fs, true, true, 0); {das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird}
        IOHandler.CloseWriteBuffer;
      except
        IOHandler.CancelWriteBuffer;
        raise;
      end;
    finally
      Disconnect;
      fs.Free;
    end;
hibbert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: Di 14.02.06 20:48 
mhh leider immer noch genau der gleiche Fehler :cry:

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 14.02.06 21:00 
Dann probiers mal hiermit. Ich hab jetzt nur versucht das Ganze zum Kompilieren zu bringen, ich weiß nicht, ob es wirklich funktioniert. Die Prozedurnamen haben sich ein wenig geändert wie Du siehst. Außerdem gibt es WriteStream nicht mehr und die neue Methode benötigt einen TIdStreamVCL, den Du in der Unit IdStreamVCL findest. Das ist die Variable stream.

Einfach mal damit rumprobieren ;-)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
with IdTCPClient1 do
  begin
    fs := TFileStream.Create(filename, fmOpenRead or fmShareDenyWrite); //Datei in FileStream einlesen
    stream := TIdStreamVCL.Create(fs,true);
    Connect;  //und Verbindung herstellen
    try
      IOHandler.WriteBufferOpen; //stellt sicher, dass alle Daten versendet werden
      try
        IOHandler.Write(stream, 0, true); {das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird}
        IOHandler.WriteBufferClose;
      except
        IOHandler.WriteBufferCancel;
        raise;
      end;
    finally
      Disconnect;
      fs.Free;
    end;
  end;
hibbert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: Di 14.02.06 21:07 
Jo danke lässt sich compilieren, mal sehen wie es mit dem empfangen geht :wink:

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej