viele Datein in eine packen

FSA

Erfahrenes Mitglied
Hallo
Ich möchte gerne zB Bilder mit C++ in nur eine Datei packen aber nicht komprimieren!
nun will ich mit C++ direkt die Datei zB Bild_22.png öfnnen ohne die vorher erstellte Datei wieder zu entpacken!
Also qusie so:
öffne_Datei("Gepackte_Datei.datei\\Bild_22.png");
ist so was möglich?
Danke
 
Hi

wenn du die Bilder in deinem Programm anzeigst, möglich.

Wenn sie mit dem Standardprogramm oder sonst irgendwas geöffnet werden sollen: Zuerst entpacken.
Theoretisch wäre es zwar ohne auch möglich, aber da müsste das andere Programm mitmachen. Und ich kenn kein Bildprogramm, das sich von einer angegebenen Adresse aus dem Speicherbereich eines Fremdprogramms ein Bytearray zum Öffnen holt.
 
Es soll kein fremdes programm entpacken nur mein programm soll die dateien alle in eine reinschreiben und sie auch wieder lesen können.
Und das alles bitte möglichst schnell sinst bracuht es so lange zum Laden.
MFG
Danke
 
Und wo ist dann das Problem?
Zuerst Datei öffnen, Verzeichnis rein, Daten rein, schließen.
Datei öffnen, Verzeichnis durchsuchen, seek zur gewünschten Position, bestimtme Byteanzahl lesen, schließen.
 
hä? ok das kapier ich nicht wie kann ich zb 3 Blder in eine Datei packen und wieder auslesen?
Das versteh ich nicht wirklich :D
MFG
 
Muss die Datei zB. ein gültiges Zip sein, das mit anderen Programmen öffenbar ist, oder nur für deins?

Wenn nur für deins:
Öffne die Datei im Binärmodus (bei fopen rb und wb statt r und w)
Dann schreibst du zB. Die Anzahl der Bilder drinnen als int(4 Byte, nicht ascii) rein.
Dann kommt pro Bild ein int mit der Postion, wo die Daten in der Datei anfangen, ein int mit der Byteanzahl und der Dateiname.
Dann die Daten.

Zum Auslesen gehst du die Dateinamen/Länge/Offset durch, um herauszufinden, welche Bilder drin sind und welches du auslesen willst.
Von diesem springst du dann mit fseek (oder vergleichbares bei iostream) zum Offset und liest Anzahl Bytes aus.

Gruß
 
Ok du sry aber das ist glaub ich noch etwas zu komplizeirt für mich :D
Könntest du da irgendwie ein link finden oder ein Codeschnipsel tut es auch, nur zum lesen und schreiben.
Und ja die Datei soll nur für mein prog sein.
PS Wie krig ich auf den byte ganu die größe eines Bildes/Datei/Sounds?
 
Windows oder Linux?
Nur reines klassenloses C oder auch C++ erlaubt?

Und bevor ich einen Link zu einem Code genau für dieses Problem finde, kann ich es vermutlich selber schneller programmieren. Ist wirklich nicht viel.

fopen, fclose, fileno, _filelength, fread, fwrite, malloc, free.
Mehr braucht man nicht.
 
  • Gefällt mir
Reaktionen: FSA
Zurück