![]() |
Abbrevia und AtViewer wollen nicht mit TMemoryStream
Hallo Gemeinde,
ich habe mal wieder so ein dummes Problem. Ich möchte den Inhalt im ATViewer anzeigen. Nutze ich dazu ein MemoryStream bleibt zeigt der ATViewer nix an(Fenster wird Dunkelgrau):
Delphi-Quellcode:
procedure TMailForm.ShowMemFile(ArchivName : String);
var MS : TMemoryStream; UZ : TAbUnZipper; begin MS := TMemoryStream.Create; try UZ := TAbUnZipper.Create(Self); try UZ.Stream := Stream; UZ.ExtractToStream(ConfirmFileName(ArchivName), MS); MS.Position := 0; ShowContent(MS, vmodeMedia); // <-- Problem? finally UZ.Free; end; finally MS.Free; end; end;
Delphi-Quellcode:
Nutze ich dagegen den FileStream, futz es:
procedure TMailForm.ShowContent(aStream : TStream; AMode: TATViewerMode);
begin ATViewer.OpenStream(aStream, aMode); end;
Delphi-Quellcode:
Meine Vermutung, es hängt mit
procedure TMailForm.ShowFileText(aText : String);
var FS : TFileStream; FN : String; begin FN := GetTempFileName('temp.html'); FS := TFileStream.Create(FN, fmCreate, fmShareDenyWrite); try FS.Write(Pointer(aText)^, Length(aText)); FS.Position := 0; finally FS.Free; end; ATViewer.Open(FN); end;
Delphi-Quellcode:
zusammen.
AMode: TATViewerMode
Hat jemand einen kleinen Hinweis? Ach so, den Typ(?) der Datei kenne ich, in Form von:
Code:
.
application/pdf
Ich Danke Euch und wünsche ein friedsammes Wochenende:wink: |
AW: Abbrevia und AtViewer wollen nicht mit TMemoryStream
Könnte auch daran liegen, dass der PDF Reader, welcher ja letzt endlich dein Dokument anzeigen soll, den Stream nicht frisst. Warum entpackst du nicht einfach das Dokument temporär, zeigst es an und löscht es dann wieder. Das funzt auf jeden Fall.
|
AW: Abbrevia und AtViewer wollen nicht mit TMemoryStream
Ich sehe beim ATViewer keinerlei Hinweis, dass er PDFs unterstützt.
Bei vmodeMedia werden intern nur Bild- und Multimediadateierweiterungen aus Open dafür benutzt, wenn dort die Dateierweiterungen analysiert werden. Die Beschreibung in der Hilfe: Zitat:
Am nächsten kommt noch Internet oder Plugins als Typ... evtl. geht das damit... Zitat:
|
AW: Abbrevia und AtViewer wollen nicht mit TMemoryStream
Zitat:
|
AW: Abbrevia und AtViewer wollen nicht mit TMemoryStream
Aber wohl kaum mit dem Windows Media Player Control, das hier ja als Typ angegeben wurde... Ich habe ja geschrieben, wenn, dann vermute ich mal, dass das über die beiden anderen Typen geht. Der Weg über das Internet Explorer Control ist ja allgemein bekannt für PDFs.
|
AW: Abbrevia und AtViewer wollen nicht mit TMemoryStream
Hab länger nicht damit gearbeitet, aber soweit ich mich erinnere ist vmodeMedia richtig. Damit öffnet man auch Word oder Open Office Dokumente, das bezieht sich nicht nur auf den Media Player.
|
AW: Abbrevia und AtViewer wollen nicht mit TMemoryStream
Ich habe es gerade selbst ausprobiert. :roll:
Wenn man Open mit einer PDF Datei aufruft, wird der Typ als vmodeWeb erkannt und ein TWebBrowser wird benutzt um diese Datei per Navigate aufzurufen. Ganz wie ich es vermutet hatte. Dass das nicht mit einem Stream geht, ist klar. Benutzt man OpenStream wird wie man mit einem Blick in den Quelltext sieht nur ein Event wie OnLoadWebStream für Typ Web oder OnLoadImageStream für Typ Media aufgerufen, in dem man selbst den Streaminhalt in den Viewer bringen soll... |
AW: Abbrevia und AtViewer wollen nicht mit TMemoryStream
Sorry, dann hab ich mich vertan.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz