@Mimi: Im Prinzip ganz einfach. Gehen wir mal davon aus, du hättest eine DAtei mit folgender Dateistruktur
Code:
\
\Ordner1
\Test.txt
\Bild.bmp
\Ordner2
\SubOrdner1
\Test.txt
Wenn du jetzt die Dateien lesen willst, geht das als Beispiel wie folgt:
Delphi-Quellcode:
var
Storage: IGpStructuredStorage;
begin
Storage := CreateStructuredStorage; // Interface instanziieren, daher auch kein Free am Ende
Storage.Initialize('Test.dat',fmOpenRead); // Die eigentliche Datei öffnen (mit fmCreate wird einen neue erzeugt)
Memo1.Lines.LoadFromStream(Storage.OpenFile('\Ordner1\Test.txt', fmOpenRead);
Memo2.Lines.LoadFromStream(Storage.OpenFile('\Ordner2\SubOrnder1\Test.txt', fmOpenRead);
Image1.Picture.LoadFromStream(Storage.OpenFile('\Ordner1\Bild.bmp',fmOpenRead);
end;
Das ist jetzt aber die absolute Quick & Dirty Methode. Die Funktion OpenFile gibt einen Stream zurück, den ich hier natürlich nicht wieder freigebe. Aber ich wollte es mal so kurz wie möglich halten. Ansonsten verlängert sich der Aufruf um 2 Zeilen (erst Stream holen, dann LoadFromStream aufrufen, dann Stream wieder freigeben).
Ich finde das ganze angenehm einfach und flexibel
@Olli: Stimmt, bin ich auch schon drüber gestolpert. Leider aber auf
COM aufbauend und so keinesfalls portierbar (korrigier mich, wenn ich mich irre)