Einzelnen Beitrag anzeigen

panch

Registriert seit: 9. Mär 2010
Ort: Herrsching am Ammersee
7 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Wie kann ich Outlook-Header aus *.MSG-Dateien auslesen?

  Alt 11. Mär 2010, 13:47
Schönen Tag allerseits,

gerade frisch wegen des vorliegenden Threads angemeldet, will ich ihn aus der Versenkung emporheben und schauen, ob mir jemand einen Tip geben kann, wie ich einen geänderten Stream nicht nur speichern, sondern auch seine Länge, die in meinem Fall kürzer ist als zuvor, enstprechend anpassen kann.

Zu Testzwecken habe ich mir den von sakura dankenswerterweise erstellten und zur Verfügung erstellten Quellcode geholt und damit ein wenig experimentiert. Die, wie mir scheint, für mich entscheidende Methode ist dabei die Methode LoadHeaders, denn darin erhalte ich über den TOLEStream OS Zugriff auf meinen Stream, den ich tatsächlich ändern und speichern kann (in Wahrheit ersetze ich seinen Inhalt vollständig durch einen neuen Inhalt). Mein Problem besteht nun aber darin, daß beim Speichern des geänderten Streams die alte Länge (Size) des Streams nur dann an die neue Länge angepaßt wird, wenn der Stream länger ist, nicht jedoch wenn er kürzer ist.

Folgende Zeilen hab ich in die oben genannte Methode zum Experimentieren eingefügt:

Delphi-Quellcode:
var
  myBytesStream: TBytesStream;

...
        OS.Seek(0, soFromBeginning);
        OS.CopyFrom(myBytesStream, 0);
...
        aStorage.Commit(STGC_DEFAULT);
Die Frage also: Wie kann ich den alten Stream-Inhalt löschen bzw. die Länge des Streams auf 0 zurücksetzen, bevor ich den neuen Inhalt zuweise?

Diese Frage mag nun dem einen oder anderen als eine dumme Frage erscheinen und vielleicht denke ich ebenfalls so, sobald ich die Antwort kenne, doch im Moment bin ich leider ein wenig ratlos.

Kurz zu mir: Um es gleich vorweg zu sagen, ich bin eigentlich alles andere als ein Pascal-Neuling (Turbo Pascal kenne ich beispielsweise seit er Version 2), aber mit Compound Documents, die zwar ein alter Hut, aber dennoch neu für mich sind, und dem Haufen verschiedener Streams und Storages, die Delphi 2010 mitbringt, habe ich als der Ab-und-zu-Programmierer, der ich seit Anfang der 90er bin, keinerlei Erfahrungen.

Ich bedanke mich gleich mal vorab für die Hilfe.

Viele Grüße
Franz
  Mit Zitat antworten Zitat