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 ?