Guten Abend allerseits (warum schreibe ich eigentlich immer nur mitten in der Nacht? :rolleyes: ), ich hab neben meinen Entity System noch etwas was mir in letzter Zeit im Geist rumschwiert. Da ich öftermal mit großen Tabellen arbeite habe ich mir ein eigenes kleines Format gemacht mit dem ich diese Tabellen speichern und bearbeiten kann, doch leider funktioniert das löschen nicht so wie ich mir das vorstelle.
Das Format ist etwa so aufgebaut:
0. Header Anfang (Position Angabe in der Datei)
1. Tabellen Daten
1.1. Wert 1
1.2. Wert 2
2. Header (stimmt so nicht ganz, ist ja unten^^)
2.1. Tabellen Name
2.2. Tabellen Anfang (Position Angabe in der Datei)
2.3. Tabellen Größe
Jetzt lese ich immer den Header ein (desen Position ja am Anfang der Datei steht) und wenn etwas hinzugefügt wird muss ich nur an die alte Header Position die neuen Daten schreiben, den erweiterten Header wieder hintendran hängen und am Anfang der Datei die Header Position verändern.
Zum löschen habe ich noch keine Möglichkeit gefunden, wie das ganze funktionieren soll ohne das ich die, nach dem zu löschenden Eintrag kommenden Daten, einlese und dann den "vorder" & "hinter" Teil wieder in eine neue Datei zu schreiben, da die alte ja nichtmehr kleiner wird. Meine Frage ist jetzt also gibt es eine möglichkeit in einem Stream/einer Datei in der Mitte Bytes zu löschen und den Rest "aufrücken" zu lassen?
Noch ein kleines Beispiel:
Es soll aus dem Stream die 0x01 und 0x04 gelöscht werden.
Aus 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
soll 0x00, 0x02, 0x03, 0x05, 0x06 ohne das die 2 Bytes die vorher 5 und 6 beinhaltet haben noch Speicherverbrauchen.