Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wieder die guten Streams :( (https://www.delphipraxis.net/55167-wieder-die-guten-streams.html)

Prototypjack 17. Okt 2005 16:36


Wieder die guten Streams :(
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
Ich habe ein weiteres Problem mit den Streams.
Diesmal ist es aber für mich komplett unlogisch, wieso dieser Stream Read Error auftritt.
Ich habe meine Unit mal angehängt damit ihr sie euch ansehen könnt und mich eventuell auch auf andere Fehler hinweisen könnt ;)

Also:
Das hier funktioniert(Dabei wird der Stream direkt in den Funktionen geladen):
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Archive: TArchive;
//  FStream: TFileStream;
begin
  Archive := TArchive.Create(ARCHIVEFILE);
//  FStream := TFileStream.Create(ARCHIVEFILE, fmCreate or fmShareExclusive);
  try
  showmessage(inttostr(Fstream.position));
    Archive.OnFileProgress := FileProgress;
    Archive.OnTotalProgress := TotalProgress;
    ListBox1.Items.Assign(Archive.Contents);
    ShowMessage('Test');
    Archive.ExtractAll(EXTRACTTO);
  finally
//    FreeAndNil(FStream);
    Archive.Free;
  end;
end;
Aber: Wenn ich den Stream schon in bei dem Button lade und ihn dann später an die selbe(nur auf Stream-Empfang ausgelegte)Funktion schicke gibt er mir Exceptions ohne Ende:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Archive: TArchive;
  FStream: TFileStream;
begin
  Archive := TArchive.Create(ARCHIVEFILE);
  FStream := TFileStream.Create(ARCHIVEFILE, fmCreate or fmShareExclusive);
  try
  showmessage(inttostr(Fstream.position));
    Archive.OnFileProgress := FileProgress;
    Archive.OnTotalProgress := TotalProgress;
//    ListBox1.Items.Assign(Archive.Contents);
    ShowMessage('Test');
    Archive.ExtractAllFromStream(EXTRACTTO,FStream);
  finally
    FreeAndNil(FStream);
    Archive.Free;
  end;
end;
Das sollte doch keinen Unterschied machen oder?
Ich bitte um Hilfe
Danke schonmal
Max

jim_raynor 21. Okt 2005 13:49

Re: Wieder die guten Streams :(
 
Ich vermute mal, weil FStream leer ist und dort keinerlei Daten drin sind. Für mich hört sich ExtractAllFromStream so an, dass in dem übergebenen Stream, die Archivdatei drin ist. Da aber der Stream leer ist, wird er Probleme haben, irgendwas daraus zu extrahieren ;)

Prototypjack 22. Okt 2005 23:31

Re: Wieder die guten Streams :(
 
Der Stream dürfte doch eigentlich mit dieser Zeile nichtmehr leer sein oder?
Delphi-Quellcode:
  FStream := TFileStream.Create(ARCHIVEFILE, fmCreate or fmShareExclusive);
Die Methodik der Routine hast du schon richtig verstanden, sie soll das Archiv im Stream nehmen.
Gruß,
Max

EDIT:// Ich Vollidiot ... Ich überschreibe durch 'fmCreate' ja den Stream *Bangs his head repeadly against a wall*
Danke auf jeden Fall!


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