Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ZLib und stream Problem (https://www.delphipraxis.net/38532-zlib-und-stream-problem.html)

bjacke 20. Jan 2005 15:33


ZLib und stream Problem
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  ZLib,IniFiles,ShellApi,Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
      private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
Var dir,version:string; stream:Tstream; var Ini: TIniFile; update:boolean;
procedure Decompress(InputFileName, OutputFileName: string);
var InputStream, OutputStream: TFileStream;
  DeCompressionStream: TDeCompressionStream;
  Buf: array[0..4095] of Byte;
  Count: Integer;
begin
  InputStream:=TFileStream.Create(InputFileName, fmOpenRead);
  try
    OutputStream:=TFileStream.Create(OutputFileName, fmCreate);           <---------------hier taucht das Problem auf
    try
      DecompressionStream := TDecompressionStream.Create(InputStream);
      try
        while true do
        begin
          Count := DecompressionStream.Read(Buf[0], SizeOf(Buf));
          if Count = 0 then
            break
          else
            OutputStream.Write(Buf[0], Count);
        end;
      finally
        DecompressionStream.Free;
      end;
    finally
      OutputStream.Free;
    end;
  finally
    InputStream.Free;
  end;
end;


Begin
dir:=ExtractFileDir(Application.ExeName) ;
if fileexists(dir+'\update.zip') then
Begin
ShowMessage(dir+'\update.zip');
Decompress(dir+'\update.zip',dir+'\');

  try
    Ini:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'\BOINC-OBSERVER.ini');

    Ini.WriteString('BOINC-Observer','version',Ini.ReadString('update','to version',version));

  except
  Ini.Free
  End;
deletefile(dir+'\update.zip');
dir:=dir+'\BOINC_Observer.exe' ;
ShellExecute(Application.Handle, 'open', PChar(dir), nil, nil, SW_SHOW);
End;

End;


end.
Ich krieg immer ne streamfehlermeldung an der oberen Stelle. Habe auch schon unzählige andere Foren abgeklappert, aber ohne Erfolg. Fals mir hier einer weiterhelfen könnte, wäre das echt toll.
Vielleicht ist das Problem, dass die Dateinen im zip-Archiv in einen Ordner sollen und nicht ein eine einzelene Datei :?: :!:

Thunderman 20. Jan 2005 16:08

Re: ZLib und stream Problem
 
Hallo!

Du musst für den Outputstream eine konkrete Datei angeben. Er muss eine Datei anlegen, in die er schreiben kann. Ein Verzeichnis alleine genügt nicht, auch wenn im ZIP-Archiv vll. genaue Dateinamen drin stehen, das weiß der FileStream ja nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz