Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datensatz einer typsierten datei löschen (https://www.delphipraxis.net/62969-datensatz-einer-typsierten-datei-loeschen.html)

LkZ 12. Feb 2006 00:09


Datensatz einer typsierten datei löschen
 
hi leute,
wollt euch ma fragen, ob es eine funktion gibt, die einen record-datensatz einer typisierten datei löscht.
hab viel gesucht, aber leider nix gefunden. gibt es so eine funktio überhaupt??

mfg

3_of_8 12. Feb 2006 01:02

Re: Datensatz einer typsierten datei löschen
 
Du könntest die Records in ein Array einlesen, alle bis auf, das, das gelöscht werden soll und dann das Array wieder abspeichern.

gfjs 12. Feb 2006 04:54

Re: Datensatz einer typsierten datei löschen
 
Du könntest eine temporäre Datei anlegen und in diese Datei die nicht zu löschenden Datensätze schreiben, dann die erste Datei löschen und die temporäre Datei umbenennen.

Ich würde es so machen:

Entweder in den Record ein zusätzliches Boolean-Feld für gelöscht einfügen oder beim Löschen ein Feld auf einen Wert setzen, der sicher NICHT auftritt (z.B. '' in einem Stringfeld oder -1 in einem Feld, in dem sonst nur positive Werte stehen). Nachdem vermutlich nicht nur einmal ein Datensatz gelöscht werden soll, würde ich mir für's Löschen eine Prozedur schreiben. Je nach Bedarf kann dann die Prozedur bei jedem Löschvorgang oder einmalig beim Verlassen des Formulars aufgerufen werden. Für zwischenzeitliches Lesen der Datei: if not Record.geloescht oder if Record.Feld <> '' o.ä.

mfg gfjs

woki 12. Feb 2006 09:20

Re: Datensatz einer typsierten datei löschen
 
Hallo,

der übliche und beste Weg, zumindest bei größeren Dateien, wäre wohl, die Datensätze als gelöscht markieren, aber erstmal nicht entfernen. Die "Löcher" werden dann von neuen Datensätzen wieder belegt. Wenn die Anzahl der Löcher einen Grenzwert überschreitet, wird eine Garbage Collection durchgeführt.
Die Vorgehensweise kann dabei so sein wie ober beschrieben, oder es werden halt Datensätze vom Ende der Datei genommen, und in die Löcher gestopft. Bei sehr großen Dateien ist das performanter.

Grüüsse
Woki


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 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