Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TStream.Seek nicht implementiert - Warum? (https://www.delphipraxis.net/89971-tstream-seek-nicht-implementiert-warum.html)

Andreas L. 9. Apr 2007 18:01


TStream.Seek nicht implementiert - Warum?
 
Hi,
mit folgenden Code versuche ich eine Datei herunterzuladen.
Delphi-Quellcode:
 source := TStream.Create;

 downloader := TIdHTTP.Create;
 downloader.Get(RemoveParams(ADocument), source);

 ForceDirectories(extractfilepath(application.ExeName) + GetDomain(ADocument));
 fs := TFileStream.Create(extractfilepath(application.ExeName) + GetDomain(ADocument) + '\' + GetDocumentFileName(ADocument), fmCreate);
 fs.CopyFrom(source, 0);

 fs.free;
 downloader.Free;
 source.Free;
Beim ausführen wird mir die Exception "TStream.seek nciht implementiert" entgegen geschleudert. Warum?

SirThornberry 9. Apr 2007 18:02

Re: TStream.Seek nicht implementiert - Warum?
 
weil TStream eine abstrakte Basisklasse ist.
Du musst dich für einen konkreten Stream eintscheiden (MemoryStream, FileStream, StringStream etc.)

mkinzler 9. Apr 2007 18:02

Re: TStream.Seek nicht implementiert - Warum?
 
Weil TStream eine (abstrakte) Basisklasse ist. Die Methode wird in abgeleiteten Klassen implementiert.

Andreas L. 9. Apr 2007 18:06

Re: TStream.Seek nicht implementiert - Warum?
 
Wenn ich TStringStream verwende kommt zwar kein Fehler aber es wird weder eine Datei erstellt, noch eine Datei irgendwo gespeichert. Warum? Muss ich evtl. einen anderen StreamTyp nehmen?

Neutral General 9. Apr 2007 18:07

Re: TStream.Seek nicht implementiert - Warum?
 
Benutz lieber einen FileStream oder einen MemoryStream. StringStreams sind für Strings gedacht und nicht für Dateien.

Christian Seehase 9. Apr 2007 20:25

Re: TStream.Seek nicht implementiert - Warum?
 
Moin Andreas,

warum übergibst Du dem Get nicht gleich den FileStream als Ziel?

Andreas L. 10. Apr 2007 10:41

Re: TStream.Seek nicht implementiert - Warum?
 
Zitat:

Zitat von Christian Seehase
Moin Andreas,

warum übergibst Du dem Get nicht gleich den FileStream als Ziel?

Das habe ich ja probiert. Aber in der Datei steht dann gar nix drin...

Robert Marquardt 10. Apr 2007 11:18

Re: TStream.Seek nicht implementiert - Warum?
 
Poste doch mal die Sourcen mit dem FileStream.

Andreas L. 10. Apr 2007 11:23

Re: TStream.Seek nicht implementiert - Warum?
 
Delphi-Quellcode:
 fs := TFileStream.Create(extractfilepath(application.ExeName) + GetDomain(ADocument) + '\' + GetDocumentFileName(ADocument), fmCreate);
downloader := TIdHTTP.create;
downloader.get(Adocument, fs);
downloader.free;
fs.free;
ADocument wird mir von idHTTPProxyServer übergeben und enthält die angeforderte Adresse (z. B. http://www.delphipraxis.net/bla.php).
GetDomain ist eine von mir gebastelte Funktion die den Domainnamen (z. B. delphipraxis.net) zurückgibt.
GetDocumentFileName ist ebenfalls eine Routine von mir die das angeforderte Dokument zurückgibt. (z. B. bla.php)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 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