Autor Beitrag
soulies
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 13.12.05 11:23 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 612

WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
BeitragVerfasst: 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

_________________
Ein Computer ohne Windows ist wie eine Schokoladentorte ohne Senf.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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.

_________________
We are, we were and will not be.