Datei vergrößern ohne Überschreiben

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
MitjaStachowiak
Lazarusforum e. V.
Beiträge: 395
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Datei vergrößern ohne Überschreiben

Beitrag von MitjaStachowiak »

*Kurze Story*
Meine Mutter hatte es neulich mal geschafft, in einem 100 seitigen Word-Dokument eine leere Seite zu öffnen und das dann abzuspeichern. Tja - da war plötzlich das Dokument leer und das letzte Backup 2 Tage alt. Ich hatte gehofft, das Ende des Dokumentes retten zu können, indem ich mit TFileStream.Size einfach die Größe wieder auf die ursprünglichen 600kB setze - in vager Hoffnung, dass Windows mir den selben Speicher wie vorher gibt (Währe sicher mit der Formatierung schwierig geworden, aber ein Versuch war es doch wert). Nur dummer Weise überschreibt diese Methode aus unergründlichen Gründen den neu reservierten Speicher mit Nullen und dann waren die Daten auch schon weg :(

Aber für die Zukunft würde ich jetzt doch ganz gerne wissen, wie man eine Datei anlegen oder vergrößern kann, ohne dass der Speicher überschrieben wird.
Hat jemand einen Tipp?

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Datei vergrößern ohne Überschreiben

Beitrag von corpsman »

Ich würde eher sagen Windows hat dir einen anderen Platz gegeben.

Das Überschreiben mit 0en wird wohl ein Lazarus Ding sein. Unter C ( auch wenn ich die Sprache nicht mag ) wäre der Speicher sicherlich nicht zurückgesetzt worden.

Zumindest ist es so wenn du im RAM arbeitest. Ob sich das 1:1 auf die HDD übertragen lässt ist natürlich die Frage..
--
Just try it

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Datei vergrößern ohne Überschreiben

Beitrag von Teekeks »

Im RAM macht auch Lazarus das nicht (mit den 0-en).

Wird aber auf der HDD anders sein.

Nur so: die Wahrscheinlichkeit das du den selben Platz auf der HDD wieder bekommst tendiert gegen 0.

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Datei vergrößern ohne Überschreiben

Beitrag von shokwave »

IIRC wird beim speichern der Worddatei, die alte gelöscht und eine neue angelegt. Ich würde es mal mit einem Recoverytool (z.B. http://www.ontrack.de/datenrettung-software/)probieren.
mfg Ingo

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 395
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Datei vergrößern ohne Überschreiben

Beitrag von MitjaStachowiak »

Datenrettungstools habe ich auch schon versucht, aber die Platte ist stark fragmentiert und es sind über Tausend andere (gelöschte) Word-Dokumente drauf. :shock:

Ich dachte durch vergrößern der Datei bekomme ich doch mindestens bis zum nächsten Fragment den Speicher wieder - alles andere fände ich unsinnig.
Die TFileStream.Size-Methode muss deshalb wohl den Speicher überschreiben - anders kann mir jedenfalls nicht erklären, dass jeder erweiterte Speicher nur Nullen enthällt...

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: Datei vergrößern ohne Überschreiben

Beitrag von felix96 »

Recuva (oder so) ist gut, wenn man sich die mühe macht das richtige Dokument zu finden...
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Antworten