Seite 1 von 1

Containerdateiformat, Wie am besten aufbauen.

Verfasst: 06.07.2010 20:27
von cxAlex
Servus.

Ich bin gerade dabei ein kleines Containerdateiformat zusammenzuschustern, wofür auch immer, kann man ja immer mal brauchen ist sicher nicht verkehrt.

Dabei hab ich mir ein bisschen das ZIP - Format angesehen, so ähnlich werde ich das ganze wohl machen.
Was mir nicht ganz klar ist ist wie ich das löschen vorhandener Einträge realisieren soll. Entweder ich schiebe alle anderen Einträge zusammen und rechne die relativen Offsets um (was sich nicht mal so schwer realisieren lassen würde). Oder ich trage den frei gewordenen Speicherplatz in eine Liste ein, und packe später andere passende Daten hin und baue das Format so auf das sich ein Eintrag auch über mehrere nicht zusammenhängende Blocks erstrecken kann. Aber das wird schon wieder recht kompliziert und ich fürchte das die Datei sich dann stark fragmentieren würde ...

Hat einer eine Idee für mich oder gibt es eine ganz einfache Lösung und ich hab nur ein Brett vorm Kopf?

https://secure.wikimedia.org/wikipedia/ ... iformat%29

Bild

Gruß, Alex

Re: Containerdateiformat, Wie am besten aufbauen.

Verfasst: 06.07.2010 20:32
von Kiffi
Du wirst es wahrscheinlich wg. des Lerneffektes und des Spaßes selber
programmieren wollen, aber bevor es heißt "Warum hat mir das keiner
gesagt?", hier folgender Link: ;-)

http://www.purebasic.fr/english/viewtop ... 21#p322221

Grüße ... Kiffi

Re: Containerdateiformat, Wie am besten aufbauen.

Verfasst: 06.07.2010 20:40
von cxAlex
Jop, ich wills selbst machen, aber ich sehs mir mal an, Danke ;D

Gruß, Alex

Re: Containerdateiformat, Wie am besten aufbauen.

Verfasst: 06.07.2010 20:52
von Thorium
Du hast das schon alles richtig erkannt mit dem Löschen. Das Directory kommt ans Ende so wie du es skiziert hast, wenns am Anfang stehen würde müsste man jedesmal, wenn sich die Directorygröße ändert die ganze Datei neubauen.
Und wie du erkannt hast, hast du 2 Möglichkeiten zum löschen. Eine ist schnell, allerdings hast du dann ne ziemlich unoptimale Dateigröße, schlecht für portable Container aber gut für Container, die sowieso auf dem Rechner bleiben. Oder du verschiebst alles was hinter der gelöschten Datei liegt und berechnest die Einträge im Directoy neu. Das ist langsam aber resultiert in einer optimalen Dateigröße, gut für portable Container.
Allerdings musst du dich nicht für eins von beidem entscheiden, du kannst beides implementieren. ^^

Kommt halt immer drauf an wofür der Container sein soll. Als Allzweckcontainer würde ich empfehlen beides zu implementieren. Solls ein fixer Ressourcencontainer z.B. für Spiele sein, würde ich löschen garnicht implementieren, wäre nur unnützer Overhead, hier würde ich jedesmal den Container komplett neubauen.

Warum hast du eigentliche relative Offsets im Directoy und nicht absolute? Neuberechnen musst du die ja so oder so.