Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - teildaten aus 'file of byte' entfernen ...


soulies - Di 13.12.05 11:23
Titel: teildaten aus 'file of byte' entfernen ...
hi,

folgendes problem:

ich hab ein 'file of byte' - mit read kann ich lesen, mit write schreiben - klar
aber wie kann ich etwas aus diesem file wieder löschen ?

bei strings kann man ja 'delete()' verwenden, aber in meinem fall weiß ich leider keinen rat.

ich hoffe ihr könnt es mir sagen

mfg


Stefan.Buchholtz - Di 13.12.05 11:31

Du kannst aus einer Datei nicht einfach in der Mitte ein Teil löschen. Du musst die Datei lesen und wieder schreiben, wobei du den zu entfernenden Teil weglässt. Wenn die Datei klein genug ist, um komplett in den Speicher zu passen, kannst du sie ganz einlesen und wieder wegschreiben, ansonsten musst du mit einer temporären Datei arbeiten. Ich würde für sowas übrigens einen TFileStream statt ein file of byte verwenden.

Stefan


Gausi - Di 13.12.05 11:33

Das muss man wohl per Hand machen. Also alle nachfolgenden Bytes um entsprechend viele Stellen nach vorne schieben. Einen Befehl dafür gibt es afaik nicht.
Wenn die Datei größer ist, und man nur Kleinigkeiten löschen möchte, kann man ggf. auch die zu löschenden Bytes einfach mit 0 überschreiben.

Vorteil: Es geht wesentlich schneller.
Nachteil: Die Datei wird dadurch nicht kleiner und eventuell wird dadurch die Datei derart geschädigt, dass sie später nicht mehr gelesen werden kann - das kommt aber ganz auf den Dateityp an.