Einzelnen Beitrag anzeigen

DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
441 Beiträge
 
Delphi 12 Athens
 
#33

Re: StreamWrite erzeugt nur 0 Byte-File

  Alt 18. Jun 2008, 15:24
Zitat von Muetze1:
Der jetzige Code deckt alle Dateigrößen ab, auch ungerade

Delphi-Quellcode:
function DateiSchreiben(const AFilename: string; const AFileSize: Int64): boolean;
const
  coFileData = '#abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+';
var
  lStream: TStream;
  lBytesToWrite: Int64;
  lWriteCount: Int64;
begin
  result := false;

    // Erstmal den Stream öffnen. Wenn das nicht klappt, brauch ich kein Array...
  lStream := TFileStream.Create(AFilename, fmCreate or fmShareDenyWrite);
  try
    lBytesToWrite := AFileSize;
    while ( lBytesToWrite > 0 ) do
    begin
      lWriteCount := Min(lBytesToWrite, length(coFileData));

      lStream.WriteBuffer(coFileData, lWriteCount);

      Dec(lBytesToWrite, lWriteCount);
    end;

    result := true;
  finally
    lStream.free;
  end;
end;
Wieder ungetestet, aber sollte so klappen.
Jetzt muss ich hierzu noch einmal eine (möglicherweise unsinnige) Frage stellen:

Wenn ich nun anstatt

Delphi-Quellcode:
const
  coFileData = '#abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+';
coFileData als STRING[64] deklariere und in der ersten Funktionszeile den oben dargestellten Inhalt zuweise, wird mir jedesmal vor dem Text ein @ mit in die Datei geschrieben.

Delphi-Quellcode:
var
  lStream: TStream;
  lBytesToWrite: Int64;
  lWriteCount: Int64;
  coFileData: STRING[64];
begin
  result := false;
  coFileData:='#abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+';
  ...
Woran kann das liegen ?
Devid
  Mit Zitat antworten Zitat