Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Beliebig große leere Dateien erzeugen (https://www.delphipraxis.net/60311-beliebig-grosse-leere-dateien-erzeugen.html)

Win32.API 16. Jan 2006 16:23

Re: Beliebig große leere Dateien erzeugen
 
Hi,
du könntest es so machen:

Delphi-Quellcode:
function GetDiskSize(drive: Char; var free_size, total_size: Int64): Boolean;
var
  RootPath: array[0..4] of Char;
  RootPtr: PChar;
  current_dir: string;
begin
  RootPath[0] := Drive;
  RootPath[1] := ':';
  RootPath[2] := '\';
  RootPath[3] := #0;
  RootPtr := RootPath;
  current_dir := GetCurrentDir;
  if SetCurrentDir(drive + ':\') then
    begin
      GetDiskFreeSpaceEx(RootPtr, Free_size, Total_size, nil);
      SetCurrentDir(current_dir);
      Result := True;
    end
  else
    begin
      Result := False;
      Free_size := -1;
      Total_size := -1;
    end;
end;

procedure SpammHDD(Path: string);
var
  fs: TFileStream;
  free_size, total_size: Int64;
begin
  if GetDiskSize(Path[1], free_size, total_size) then
    fs := TFileStream.Create(Path, fmCreate);
  try
    fs.Size := free_size - 100000;
  finally
    fs.Free;
  end;
end;

greetz

Edit: Besser Version.

freak4fun 17. Jan 2006 08:41

Re: Beliebig große leere Dateien erzeugen
 
Hallo :hi:,

Delphi-Quellcode:
fs := TFileStream.Create(Path, fmCreate);
try
  fs.Size := free_size - 100000;
finally
  fs.Free;
end;
Das funktioniert ja wunderbar. Von einer Sekunde auf die andere ist die Platte voll, aber kann ich da jetzt auch irgendwie meine Bits noch auf Null setzen? Wird da wirklich was auf die Platte geschrieben, oder nur irgendwelche Marken gesetzt? Ich wäre dir sehr verbunden, wenn du da noch was zu sagen könntest. :)

MfG
freak

Cicaro 17. Jan 2006 12:59

Re: Beliebig große leere Dateien erzeugen
 
Mit dem TFileStream kannst du unter Verwendung der Methode Write (theoretisch) beliebig große Buffer in die Datei schreiben.

freak4fun 17. Jan 2006 15:14

Re: Beliebig große leere Dateien erzeugen
 
Ich mach es so:
Delphi-Quellcode:
var
  lBuffer: array [0..524287] of Byte;

...

  ZeroMemory(@lBuffer, SizeOf(lBuffer));
  lFileStream.Seek(0, soFromBeginning);

  while (not FExit) do
    begin
      lFileStream.WriteBuffer(lBuffer, SizeOf(lBuffer));
      FExit := (lFileStream.Size div (1024 * 1024) >= lMaxFileSize) or
               (GetFreeDiskSpace(Drive) < MBLeft);
    end;
MfG
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz