powiększenie rozmiaru pliku na dysku

0

Sprawa do przetestowania pod windows, a może i pod innymi systemami:

czy zapis danych na dysk z użyciem nul=0 w miejscu pointera na dane powoduje error, czy też zadziała inaczej?

https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-writefile

1

Wskazana dokumentacja nie wymienia takiej możliwości. Do tworzenia pliku o zadanej wielkości pod windowsem użyłbym SetFilePointer i SetEndOfFile.
Albo skorzystał z klasy TFileStream, która będzie działać na wszystkich platformach:

with TFileStream.Create('nazwa.pliku', fmCreate) do
begin
  Size := WielkoscPliku;
  Free;
end;
0

U mnie to działa, znaczy gdy zapiszę np. 1MB z niczego, wtedy to powiększa plik, i wszystko jest ok.
Sam plik zawiera wtedy zera i jest większy.

"A pointer to the buffer containing the data to be written to the file or device.
This buffer must remain valid for the duration of the write operation. The caller must not use this buffer until the write operation is completed."

nul is valid forever. :)

1

W sekcji "Remarks" jest napisane:
"To truncate or extend a file, use the SetEndOfFile function."

0

mało istotne co tam sobie sugerują: ważne co i jak działa;

dlatego mówiłem o testach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1