Zitat von
devidespe:
Du meinst bestimmt WriteBuffer, da ich kein WriteFile entdecken kann.
Ja, ich meinte
WriteBuffer().
Zitat von
devidespe:
Wie erklärst Du Dir die Fehlermeldung beim Compilieren ?
Na das
WriteBuffer() eine Procedure ist und keine Funktion. Und da liegt auch der Fehler:
WriteBuffer() gibt keine Anzahl der geschriebenen Bytes zurück, sondern versucht immer die angegebene Anzahl im Stück zu schreiben.
Write() kehrt direkt zurück und gibt die Anzahl der geschriebenen Bytes an. Da hatte ich also die falsche Methode im Kopf.
Ich habe es eben nochmal schnell korrigiert in Delphi und getestet:
Delphi-Quellcode:
function DateiSchreiben(
const AFilename:
string;
const AFileSize: Int64): boolean;
const
coBlockSize = 16384;
var
lStream: TStream;
lFileData:
string;
lBytesToWrite: Int64;
lWritten: Integer;
begin
result := false;
// Erstmal den Stream öffnen. Wenn das nicht klappt, brauch ich kein Array...
lStream := TFileStream.Create(AFilename, fmCreate
or fmShareDenyWrite);
try
lFileData := StringOfChar(#55, coBlockSize);
lBytesToWrite := AFileSize;
while ( lBytesToWrite > 0 )
do
begin
lWritten := lStream.
Write(lFileData[1], Min(lBytesToWrite, coBlockSize));
if lWritten <> Min(lBytesToWrite, coBlockSize)
then
exit;
Dec(lBytesToWrite, lWritten);
end;
result := true;
finally
lStream.free;
end;
end;
Zitat von
devidespe:
Übrigens nette Signatur, ich hätte aber an 3 Stellen jeweils 20h eingefügt.
Da ich schon sehr gut Hex so lesen kann (wie manche andere auch), wäre das zu einfach gewesen, da 0x20 zu auffällig sind. So weiss man erstmal nicht ob es was sinniges etc ist.