Thema: Delphi CopyFrom 0-Byte Fehler

Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#5

Re: CopyFrom 0-Byte Fehler

  Alt 26. Mai 2004, 10:36
Moin!

Wenn CopyFrom() in der Länge eine 0 bekommt, dann seeked er zum Anfang des Streams und kopiert alle vorhandenen Daten. Somit musst du einfach eine If Abfrage einbauen, ob der 2. Parameter bei CopyFrom() vielleicht 0 ist, wenn ja, dann CopyFrom() überspringen, sollte ja nicht so schwer sein.

Code:
procedure DecompressFiles(const Filename, DestDirectory : String);
var
  dest,s : String;
  decompr : TDecompressionStream;
  infile, outfile : TFilestream;
  i,l,c : Integer;
begin
  // IncludeTrailingPathDelimiter (D6/D7 only)
  dest := IncludeTrailingPathDelimiter(DestDirectory);

  infile := TFileStream.Create(Filename,fmOpenRead);
  try
    { number of files }
    infile.Read(c,SizeOf(c));
    for i := 1 to c do
    begin
      { read filename }
      infile.Read(l,SizeOf(l));
      SetLength(s,l);
      infile.Read(s[1],l);
      { read filesize }
      infile.Read(l,SizeOf(l));
      { decompress the files and store it }
      s := dest+s; //include the path
      outfile := TFileStream.Create(s,fmCreate);
      decompr := TDecompressionStream.Create(infile);
      try
        If ( l > 0 ) Then
          outfile.CopyFrom(decompr,l); // <-- HIER ENTSTEHT DER FEHLER
      finally
        outfile.Free;
        decompr.Free;
      end;
    end;
  finally
    infile.Free;
  end;
end;
MfG
Muetze1
  Mit Zitat antworten Zitat