AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Beliebig große leere Dateien erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Beliebig große leere Dateien erzeugen

Ein Thema von freak4fun · begonnen am 5. Jan 2006 · letzter Beitrag vom 17. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Beliebig große leere Dateien erzeugen

  Alt 5. Jan 2006, 09:29
Hallo ,
ich möchte eine Datei erzeugen, die den gesammten freien Platz auf der Festplatte ausfüllt. Dabei soll, wenn man die Datei wieder löscht nur Nullen auf der Festplatte(Hardware) zurückbleiben. Die Datei muss keine spezielle Endung haben. Kann mir da einer weiterhelfen? Oder kann man vielleicht auch anders den gesammten freien Speicherplatz mit Nullen auffüllen?

Wenn das zu unklar ist ist bitte fragen.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#2

Re: Beliebig große leere Dateien erzeugen

  Alt 5. Jan 2006, 10:09
Hallo Christian,

herausfinden wieviel Platz verfügbar ist: GetDiskFreeSpace

Ich habe nie versucht mit TFileStream eine Datei > 2/4 GB zu erzeugen, weiß also nicht ob dies funktionieren wird. Ansonsten createFile verwenden und mit writeFile solange schreiben bis die gewünschte Größe erreicht ist.

Beachten solltest du, dass ein einfaches setzen der Größe nicht ausreicht, um wirklich Nullen auf die Festplatte zu schreiben.
Die Win32API-Hilfe sagt nämlich dazu
Zitat:
SetEndOfFile: This function can be used to truncate or extend a file. If the file is extended, the contents of the file between the old EOF position and the new position are not defined.
TFileStream nutzt ebenfalls diese Funktion.
Sie dient eher dem Dateisystem die Datei im voraus möglichst optimal anzuordnen. Somit bräuchtest du den freien Speicher eigentlich garnicht ermitteln - du schreibst einfach so lange bis es nicht mehr geht. Beachte aber die Maximalgrößen für Dateien der unterschiedlichen Systeme.

Ich ahne übrigens was du vor hast, dir soll versichert sein, dass ein einmaliges Überschreiben ein professionelles Labor nicht davon abhalten wird, deine Daten zu rekonstruieren. Ein einfaches Undelete-Programm dürftest du allerdings aus dem Tritt bringen.

Dennoch solltest du dir überlegen, ob du an die Sache nicht doch anders rangehst, denn eine bis auf das letzte Byte gefüllte HD dürfte dir so ziemlich jedes OS und Programm verübeln.

Ein globaler Funktionshook auf deleteFile/setEndOfFile wäre imho viel schöner, du könntest dann alle gelöschten Files in eine Liste aufnehmen und später wenn die HD idle ist mehrfach mit 1 und 0 überschreiben. Bei Google suchenMST Defrag macht vor, dass so etwas funktioniert.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Beliebig große leere Dateien erzeugen

  Alt 5. Jan 2006, 10:19
Hallo Vjay ,
danke für die schnelle Antwort.

Zitat von Vjay:
Ich ahne übrigens was du vor hast...
Daran solltest du noch arbeiten. Aber ich hätte wahrscheinlich die gleiche Schlussfolgerung gezogen. Mir geht es aber um etwas Anderes. Und zwar arbeite ich mit VMs. Wenn man diese nun kopiert wird der gesammte freie Speicher mit kopiert. Das passiert allerdings nicht, wenn der freie Speicherplatz auf der VM-Festplatte mit Nullen gefüllt ist. Dadurch wird dann die kopierte VM kleiner.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#4

Re: Beliebig große leere Dateien erzeugen

  Alt 5. Jan 2006, 10:28

Arbeitest du mit VM-Ware? Dort gibt es jedenfalls die Shrink-Funktion, diese kümmert sich auch darum, daß die Dateien an den Anfang der virtuellen Platte verschoben werden.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: Beliebig große leere Dateien erzeugen

  Alt 5. Jan 2006, 10:41
Zitat von Vjay:
Arbeitest du mit VM-Ware? Dort gibt es jedenfalls die Shrink-Funktion, diese kümmert sich auch darum, daß die Dateien an den Anfang der virtuellen Platte verschoben werden.
Ja, ich arbeite mit VM-Ware. Wo finde ich denn die Shrink-Funktion? Macht diese Funktion das, was ich machen will?

Ich bin leicht verwirrt. Das Programm ist ja nicht direkt für mich. Ich kenne mich mit VM eigentlich nicht so gut aus. Ich wurde halt darum gebeten. Wenn es natürlich eine einfache schon vorhandene Funktionalität gibt wäre das auch ok.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Beliebig große leere Dateien erzeugen

  Alt 5. Jan 2006, 11:26
Ok, ich weiß jetzt wie ich den freien Speicher bekomme. Wie kann ich jetzt alle Bits (Heißen die so? ) auf Null setzen? Was auch schön wäre, wenn man das noch prüfen könnte, ob die Null sind (Ist aber nur optional ).

@Vjay: Mein Kollege meint das Verschieben alleine reicht nicht.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#7

Re: Beliebig große leere Dateien erzeugen

  Alt 5. Jan 2006, 17:50
Arbeitest du/er mit dynamischen oder statischen Containern? In den VM-Ware Tools die auf dem Guest-System installiert sind, bzw. wenn du in die Eigenschaften der VM gehst und die HD anklickst.

Zitat:
Wie kann ich jetzt alle Bits (Heißen die so? ) auf Null setzen?
Ja die heißen so. Indem du ein #0 in die Datei schreibst, setzt du 8 Bits auf 0

Zitat:
Was auch schön wäre, wenn man das noch prüfen könnte, ob die Null sind (Ist aber nur optional ).
Sicher, indem du die Datei wieder öffnest und einliest.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

Re: Beliebig große leere Dateien erzeugen

  Alt 16. Jan 2006, 15:55
Ich erzeuge eine Datei mit:
Delphi-Quellcode:
AssignFile(f, AFileName);
  try
    Rewrite(f);
  finally
    CloseFile(f);
  end;
und schreibe dann mit:

Delphi-Quellcode:
var
  lBuffer: array [0..524287] of Byte;
begin
  ...
  lFileStream.WriteBuffer(lBuffer, SizeOf(lBuffer));
Geht das Schreiben irgendwie schneller?

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#9

Re: Beliebig große leere Dateien erzeugen

  Alt 16. Jan 2006, 16:04
TFileStream wäre vielleicht eine Hilfe zum Erzeugen von Dateien, die keine besondere Bedeutung haben.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

Re: Beliebig große leere Dateien erzeugen

  Alt 16. Jan 2006, 16:39
Zitat von Cicaro:
TFileStream wäre vielleicht eine Hilfe zum Erzeugen von Dateien, die keine besondere Bedeutung haben.
lFileStream := TFileStream.Create(AFileName, fmOpenWrite); Das mach ich schon.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz