Entwickler-Ecke
Dateizugriff - doc dateien anzeigen?
sibbe - So 07.03.04 16:27
Titel: doc dateien anzeigen?
servus!
kann mir wer sagen, wie ich eine mit word xp erstellte .doc datei in einer TRichEdit-komponente anzeigen kann?
mit dem "normalen" weg komm ich immer nur auf ein ergebnis: "ÐÏࡱá", egal wie groß die .doc datei ist.
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.ffnen1Click(Sender: TObject); begin if OpenDialog1.Execute then richedit1.Lines.LoadFromFile(OpenDialog1.FileName); end; |
thx schon mal im voraus...
sibbe
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt
Keldorn - So 07.03.04 16:47
Hallo
Das geht nicht. Du kannst höchstens dein Worddokument als RTF speichern und in einem Richedit laden. Ein als Word-dokument abgespeichertes Dokument bekommst du nicht in ein Richedit. Wenns unbedingt ein Word-Doc sein muß, dann mach dich mal über OLE schlau.
Mfg Frank
patrick - So 07.03.04 16:49
du kanst leider nicht einfach eine word .doc-datei mit einem richedit laden. es sei den du hast das dokument in einem RichText Fromat gespeichert, welches die komponete auch anzeigen kann.
sibbe - So 07.03.04 17:53
hab da in einem anderen forum sogar was zu gefunden(mit ole), aber irgendwie funzt das auch nicht so wirklich... :roll:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| uses ComObj;
function ConvertDoc2Rtf(var FileName: string) : Boolean; var oWord: OleVariant; oDoc: OleVariant; begin Result := False; try oWord := GetActiveOleObject('Word.Application'); except oWord := CreateOleObject('Word.Application'); end; oWord.Documents.Open(FileName); oDoc := oWord.ActiveDocument; FileName := ChangeFileExt(FileName, '.rtf'); oDoc.SaveAs(FileName); oWord.ActiveDocument.Close(wdDoNotSaveChanges, EmptyParam, EmptyParam); oWord.Quit(EmptyParam, EmptyParam, EmptyParam); oDoc := VarNull; oWord := VarNull; Result := True; end;
procedure TForm1.Button1Click(Sender: TObject); const FileName = 'c:\Document.doc'; begin if ConvertDoc2Rtf(FileName) then begin ShowMessage('Word document has been converted to .rtf'); RichEdit1.Lines.LoadFromFile(FileName); end; end; |
die datei wird zwar erfolgreich in .rtf umgewandelt, aber beim laden steht da der gleiche mist wie bei ner doc datei :x
außerdem (hätt ich vielleicht schon am anfang sagen sollen) möchte ich lediglich den text aus den doc dateien rausfiltern, sachen wie formatierung und objekte oder so sind egal
Sven - So 07.03.04 19:19
Ich hatte mal angefangen eine Textverarbeitung a la Word mit XP-Style zu schreiben. Hierbei benötigte ich auch einen Konverter. ICh bin auf eine Kompo gestoßen, die die MS-Konverter verwendet.
Ich kann aber erst morgen sagen um welche es sich handelt, und woo man diese findet, da ich leider nciht an meinem Win-Rechner sitze.
Diese Kompo läßt sich sehr leicht einsetzen.
sibbe - So 07.03.04 20:31
is vielleicht auch garnich mehr notwendig @sven :)
hab noch von anderswo n paar tipps gekriegt und daraus folgendes kreiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| uses WordXP, OleServer
procedure tform1.DOC2rtf(InFile, OutFile: OleVariant); var Filetyp: OleVariant; WA: TWordApplication; DOC: TWordDocument; begin WA:=TWordApplication.Create(form1); WA.ConnectKind:= ckRunningOrNew; WA.Connect; try WA.Documents.Open(infile,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam, emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam); DOC:=TWordDocument.Create(form1); with doc do begin ConnectKind:=ckRunningOrNew; ConnectTo(WA.ActiveDocument); Filetyp := wdFormatRTF; SaveAs(OutFile,Filetyp); Close; Disconnect; Free; end; finally WA.Disconnect; WA.Quit; WA.Free; end; end; |
ein aufruf könnte dann so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var F:TextFile; begin if opendialog1.Execute then doc2rtf(opendialog1.FileName,changefileext(opendialog1.FileName,'.rtf'));
richedit1.Lines.LoadFromFile(changefileext(opendialog1.FileName,'.rtf'));
AssignFile(F,changefileext(opendialog1.FileName,'.rtf')); Erase(F); end; |
wenns nicht noch ne elegantere lösung gibt (und die gibts bestimmt! :P ), würd ich sagen: prob gelöst
p.s. der vorige code war ziemliche sch**sse
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!