Teilinhalt einer Datei löschen?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Kooky
Beiträge: 47
Registriert: 18.09.2004 16:13
Wohnort: München
Kontaktdaten:

Teilinhalt einer Datei löschen?

Beitrag von Kooky »

Hi,
wollte mal fragen, ob es die möglichkeit gibt, bestimmte teile einer datei zu löschen.
Z.B. steht in meiner Datei "Test" drin. Jetzt möchte ich, dass da nur noch "Tes" drin steht. Gibt es dafür eine Lösung, außer eine 2. Datei anzulegen oder den Arbeitsspeicher zu benutzen?
Das geht nicht anders, weil ich mit sehr großen Dateien arbeite und es nicht so praktisch wäre, wenn man sich mal schnell ein paar GB in den Ram lädt, oder eine 2. Datei zu erstellen, die auch so groß ist.
Würde mich über Hilfe wiedermal freuen :wink:
mfg. Kooky
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

gibt leider keine andere möglichkeit, als das parallel in eine zweite schreiben,
wenn du nicht alles auf einmal in den speicher ziehen willst.

eine lösung wie von dir angestrebt ist nur mit datenbanksystemen möglich.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

openfile() und FileSeek()
Allerdings ist die Sache kompliziert als du denkst. Wenn du ein zeichen komplett entfernen willst, wirds schwierig. Willst du nur die Zeichen mit andern Überschreiben, ist es einfacher.

Ich würde dir aber trotzdem empfehlen, zumindest blockweise (achtung dein gesuchtes wort könnte an der Grenze zum Block liegen) einzulesen, da es so wesentlich schneller ist.

Wenn du weißt, das das gesuchte wort ein String ist, das mit null terminiert ist (und in programm auch nicht angenommen wird, das der String eine feste größe ist, dann kannst du in der Regel mit einen 0 den String kürzen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

GPI hat geschrieben:Wenn du ein zeichen komplett entfernen willst, wirds schwierig.
ja, das meinte ich mit "geht nicht".
die von dir vorgeschlagene 'mit-null-überschreiben-methode' ist zwar machbar,
aber sie legt plattenplatz tot, und ich weiss nicht,
wie zuverlässig mehrfaches stringauslesen auf hunderte nullen reagiert...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kooky
Beiträge: 47
Registriert: 18.09.2004 16:13
Wohnort: München
Kontaktdaten:

Beitrag von Kooky »

eben.
Überschreiben ist kein Problem, das weiß ich ja, aber es ist eben nur die sache mit dem löschen.
hm
auf jeden fall erstmal danke für die antworten. Vielleicht fällt noch jemanden was ein
m.f.g. Kooky :wink:
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Gleichzeitiger Schreib- und Lesezugriff ist nicht möglich? Dann könntest du nämlich einfach mit Fileseek den Dateizeiger auf die erste Position hinter dem zu löschenden Bereich setzen, von dort dann mittels ReadData einen größeren Block einlesen, den Dateizeiger dann vor den zu löschenden Bereich setzen, die gerade eben gelesenen Daten schreiben usw.

Zumindest müsstest du dann keine Kopie anlegen.

Aber Vorsicht, wenn dein Programm während dieses "Umschreibens" abstürzt oder auf einmal der Strom weg ist, ist die Datei erstmal futsch ;)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Kooky
Beiträge: 47
Registriert: 18.09.2004 16:13
Wohnort: München
Kontaktdaten:

Beitrag von Kooky »

aber das hat leider wieder den bedeutenden nachteil, dass dann am ende der datei 0 Stings sind. D.H. es würde die Datei nicht wirklich verkleinern , sondern nur den zu löschenden bereich ans ende kopieren.

Ich wollte mir nämlich einen FileArchiver basteln,
mit dem ich alle meine Dateien und downloads
abspeichern, komprimieren und verschlüsseln kann.
Wenn der Archiv jetzt 10 GB groß ist und sich eine Datei darin befindet,
die 3 GB groß ist und ich die lösche, wäre es unschön,
wenn entweder die Datei genauso groß bleibt, oder ich das
ganze in eine 2. Datei kopiere, weil ich dann kurzweilig 17 GB
auf der Festplatte bräuchte und das wäre schlecht.

Argh es muss doch eine möglichkeit geben, eine Datei einfach zu verkleinern. :|

mfg. Kooky :)
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Vielleicht kommst du ja damit weiter:

http://msdn.microsoft.com/library/defau ... offile.asp

Ist aber halt "windows only"
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Kooky
Beiträge: 47
Registriert: 18.09.2004 16:13
Wohnort: München
Kontaktdaten:

Beitrag von Kooky »

Danke!
Das kann ich gut benutzen =)))))
mfg. Kooky
Antworten