Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 13, 2025 18:46

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Container Dateien
BeitragVerfasst: So Okt 03, 2010 23:14 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
hi,

da meine projecte immer mehr dateien enthalten und ich nicht 20 texturen einzeln mitgeben möchte, möchte ich gern ein container-format entwickeln/nutzen

sodass ich eben nicht ganz viele texturen habe sondern wie wir es von guten programmen kennen 1 container-file wie zb .mpq oder .mat

meine erste idee war in etwa so

Zitat:
##Header
##Library-Type
##CountofFiles
##HeaderEnd

##File01
##Name
##Type
##Size
##File01End

[...]

##DataOfFile01
[Data]
##DataofFile01End
[...]
eof


wäre das sinnvoll? oder gibt es sinnvollere lösungen? wie macht ihr das zb?

lg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Mo Okt 04, 2010 07:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Du könntest statt der Größe der Datei einen Pointer auf deren Anfang speichern. Die Größe bekommst du dann in dem du dir den Pointer der nächsten Datei anschaust. Wenn du nur die Größe speicherst musst du etwas mal den ganzen Header und die Größen aller Dateien einlesen, auch wenn du nur eine einzige Datei brauchst. Andererseits willst du den Header vermutlich sowieso im Speicher halten.

Edit: Schon mal gegooglet ob's nicht vielleicht was fertiges gibt? Du bist ja sicher nicht der erste mit diesem Problem.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Mo Okt 04, 2010 11:26 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
gegoogelt hab ich schonmal ja aber nichts passendes gefunden, nur wenn leute mit ihrem fertigen containern probleme hatten

und wegen dem header, eigentlich hatte ich mir das so vorgestellt dass beim programmstart die datei geöffnet wird ihr inhalt komplett ausgelesen und verarbeitet und dann die datei wirder geschlossen wird.

ich werde die dateien dann so sortieren das immer nur 1 max 2 container benötigt werden (1 mit allgemeneine daten und 1 mit spezifischen zb)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Mo Okt 04, 2010 12:34 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Also FreePascal liefert einen Header für das tar-Format mit. Damit habe ich auch schon gearbeitet, wenn man mag kann man das dann auch noch durch die zlib-Streams jagen und komprimieren.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Mo Okt 04, 2010 13:24 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
das hab ich mir mal angeschaut, aber kann ich damit wirklich einen container schreiben den mein programm dann zur laufzeit auch nutzen kann?

solche archive sind doch eig nur zur verwendung unter windows/linux gemacht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Mo Okt 04, 2010 17:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich denke auch, das tar ausreichend ist und du dir die Zeit sparen kannst etwas eigenes zu machen.
Wenn du nicht gerade die Datein über INet streamen willst oder das letzte bit/s lesegeschwindigkeit raus kitzeln willst, reicht das völlig.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Di Okt 05, 2010 11:45 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Hier meine Container Implementierung in 2 Std mit Lazarus gebastelt.

Ist ne simpel TForm app wo man Container laden und die dateien die darin sind herunterladen kann.
Erstellen von Container ist da auch mit drin. Dateien per listview hinzufügen, auf save drücken, Dateiname wählen, Fertig.

Source sollte leicht verständlich sein.

Fehler habe ich nach 2-3x durchklicken nicht gefunden, aber verbessern kann man da einiges noch.

Viel spass damit.

In Unit uContainer ist der source dazu.

Das ganze ist eigentlich ne art Virtuelles Dateisystem.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Zuletzt geändert von Finalspace am Di Okt 05, 2010 14:18, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Di Okt 05, 2010 12:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wenn du ganz viel Lust hast, kannst du auch mal meine uralte Idee vom MetaVFS umsetzen. In der Spezifikation ist alles drin, was man brauchen könnte - daher ist es ziemlich komplex und ich habe es selber noch nicht implementiert.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Di Okt 05, 2010 15:06 
Offline
DGL Member
Benutzeravatar

Registriert: Do Apr 09, 2009 12:51
Beiträge: 53
Programmiersprache: Lazarus
Vllt. wäre noeska´s VFS etwas für dich. Ich weiß aber noch nicht wie ausgereift das ist.
(btw: Ich hab auch ab nächste Woche Urlaub und ein VFS steht auch auf meiner todo. Mal schaun ob ich dazu komme)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Di Okt 05, 2010 17:36 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
ok ich schau mir das mal an :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Di Okt 05, 2010 18:11 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
ok als erstes habe ich mir den vorschlag von finalspace angeschaut
das sieht vielversprechend aus allerdings gibt es dazu noch paar unklarheiten

diese beiden units fehlen mir gänzlich
Code:
FileUtil, LResources,


und die klasse TFPHashList hab ich nur unter C++ gefunden, ich hab schon versucht diese gegen eine TList ode eine THashedStringList auszutauschen aber das ist alles nicht wirklich dasselbe

vieleicht könntest du das nochmal bisschen erläutern? :)

ich schau mir nun erstmal die anderen vorschläge an

€ bei den VFS bin ich mir noch nicht ganz klar was das sein soll XD


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container Dateien
BeitragVerfasst: Mi Okt 06, 2010 08:07 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Dropye hat geschrieben:
ok als erstes habe ich mir den vorschlag von finalspace angeschaut
das sieht vielversprechend aus allerdings gibt es dazu noch paar unklarheiten

diese beiden units fehlen mir gänzlich
Code:
FileUtil, LResources,


und die klasse TFPHashList hab ich nur unter C++ gefunden, ich hab schon versucht diese gegen eine TList ode eine THashedStringList auszutauschen aber das ist alles nicht wirklich dasselbe

vieleicht könntest du das nochmal bisschen erläutern? :)

ich schau mir nun erstmal die anderen vorschläge an

€ bei den VFS bin ich mir noch nicht ganz klar was das sein soll XD


Das issen Lazarus Projekt, dementsprechend kannst du nur das komplette Projekt mit Lazarus Kompilieren.

Um nur den Container zu nutzen, musst du lediglich die TFPHashList austauschen.
Ich habe ne Unit angehängt mit ner eigenen Hashtable, die auf der Hashtable von BeRo´s Besen Projekt basiert.

Übrigens ne gute erweiterung für die Container Klasse wäre das die TStream implementierung bei TContainerEntry.GetData() der beim lesen öffnet wird, nicht erst komplett den Inhalt der Daten in den Speicher pumpt (MemoryStream), sondern ein FileStream mit entsprechender Seek/Read implementierung der auf die jeweilige Container Datei zeigt. Wäre wichtig wenn man z.b. eine 2 GB großes video file zu nutzen, z.b. in ner render to texture implementierung. Nur so ne idee.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.011s | 14 Queries | GZIP : On ]