Low-Level Dateizugriff
-
Hallo
Habe folgende Situation. Es geht um einen Dateizugriff mit fwrite. Mehrere Instanzen des gleichen Struct Typs werden in eine Dateigeschrieben.
Jetzt möchte ich so effektiv wie möglich Einträge löschen.
Habe mir dazu gedacht, an die entsprechende Stelle zu springen, und dann zu löschen. jedoch will ich nicht auf die art löschen, dass ich alle nachfolgenden einträge um einen eintrag nach vorne rücke.
Wollte eher der datei irgendwie beibringen den Speicherplatz wo der genannte eintrag liegt zu überspringen.Nur is die Frage wie mach ich das.
mfg Dr.Elch
-
low level und C bzw. C++? Biste bescheuert? Wie willst du mit ner HighLevel Language LowLevel machen?
Geh mal bei Assembler gucken, DAS ist LowLevel.
-
Dr.Elch schrieb:
Wollte eher der datei irgendwie beibringen den Speicherplatz wo der genannte eintrag liegt zu überspringen.
wie meinst du das?? du könntest in deiner struct höchstens als erstes ein bool reinmachen, der angibt, ob der folgende eintrag valid ist. wenn nicht, wird er übersprungen und kann bei neuen einträgen überschrieben werden.
-
nix da schrieb:
low level und C bzw. C++? Biste bescheuert?
ähem... wir sind hier auf einem gesitteten programmier-forum, ja? und nur weil er die betreffzeile etwas "unglücklich" formuliert hat, musst du ihn nicht gleich so angehen!!
-
ok dann nenn ich es eben nicht Low-Level oder sonst wie.
Mir geht es darum, wie schaff ich es so effizient wie möglich aus einer Datei, in der Satzorientiert gespeichert wird, zu löschen?
Klar gibt es da verschiedene Ansätze. Aber ich gehe im Moment von dem Gedanken aus, was ist, wenn die Datei mal 1million datensätze beinhält (wehe jetzt sagt jemand dann nutz ne richtige DB :))und ich daraus einen Datensatz löschen will. Dann wäre es doch z.b völlig ineffizient, den ganzen Haufen, wenn auch ab der zu löschenden Stelle, in den Speicher zu laden und einfach alle folgenden Einträge einfach eine stelle weiter vorne zu schreiben und somit eben diesen einfach zu überschreiben.
Und an dieser Stelle such ich die effizienteste Methode.Meine Idee war hier, keine Ahnung inwieweit das möglich ist, an die Stelle in der Datei zu springen die gelöscht werden soll. Dort soll dann der Speicher, der von dem zu löschenden Objekt belegt wird aus der datei entfernt werden.
BSP: die datei enthält 3 Objekte vom gleihen typ, die liegen an folgenden SPeicheradressen:
123
124
125jetzt belegt die Datei also diese 3 Adressen (auf der HD versteht sich!).
Ich würde das gerne dann so machen, das man der Datei sagt,die Adresse 124 gehört ab jetzt nciht mehr dir, sondern nur noch die 123 und 125.
Also ich hoff das war irgendwie verständlich.
Und wie gesagt, weiß ja nicht in wie weit sowas möglich ist.mfg Dr.Elch
-
todo schrieb:
nix da schrieb:
low level und C bzw. C++? Biste bescheuert?
ähem... wir sind hier auf einem gesitteten programmier-forum, ja? und nur weil er die betreffzeile etwas "unglücklich" formuliert hat, musst du ihn nicht gleich so angehen!!
Sorry, habe meine TGGC Ader ausgelassen.