Einzelnen Beitrag anzeigen

Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

Streams zwischen Dll und Programmen versch. Progsprachen

  Alt 30. Aug 2007, 17:17
Hallo Leute!

Ich plane mir ein eigenes kleines Archivdateisystem zu schreiben, welches auf meinem USB-Stick die kleinen Dateien zu einer großen zusammenfassen soll. Nun möchte ich dieses Archivdateisystem aber vlt auch in anderen Programmen nutzen, ist ja vielseitig einsetzbar.
Ich habe ähnliches auch schon einmal mit Streams probiert und es hat funktioniert, aber das war nur in EINEM Programm. Nun möchte ich den Zugriff auf die Archivdatei über eine Dll abwickeln um aus verschiedenen Programm (die evtl. auch von anderen Programmiersprachen kommen sollen) darauf zugreifen zu können.

Die Frage ist nur wie ich das bewerkstellige. Wenn ein Programm eine Datei aus dem Archiv auf der Festplatte ablegen will ist das ja kein Problem, da kann ja die Dll einen FileStream zum Speichern nehmen. Was aber wenn das Programm den Streaminhalt direkt ohne Zwischenspeicherung haben möchte?Bsp. ein langes Musikstück direkt abspielen möchte?

In diesem Thread wurde schonmal auf so etwas eingegangen. Jedoch gibt mir das keine klare Lösung.

Schlagworte aus der Hilfe sind für mich bisher:
TMemoryStream.Memory und
THandleStream

Der HandleStream scheint ja eine Programmiersprachenübergreifende Lösung zu sein, jedoch geht das scheinbar (AFAIK) nur mit Dateien von der HDD.
MemoryStream als Pointer übergeben scheidet schon aus weil es in C++ sicher keine gleichbedeutende Datenstruktur gibt oder? (höchstens vlt. in Borland C++? aber das würde mir nicht reichen)

Wenn ich die Memory-Eigenschaft nutzen würde, müsste ich vom Archiv Filestream mit Hilfe eines Memorystreams eine Kopie erstellen und dort den Pointer auf Memory übergeben, aber ist das eine Gute Lösung?

Ich hoffe die Masse an Text hat nicht alle verschreckt, ihr sollt nur wissen, dass ich schon was gemacht hab und nicht euch alles erarbeiten lassen will! Ich hoffe mir kann jemand Vor- und Nachteile und evtl. andere Wege dafür nennen!

Danke!
  Mit Zitat antworten Zitat