Autor |
Beitrag |
sibbe
      
Beiträge: 50
WIN XP Prof
D7 Prof
|
Verfasst: So 07.03.04 16:27
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
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: 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
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: 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.
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
sibbe 
      
Beiträge: 50
WIN XP Prof
D7 Prof
|
Verfasst: 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...
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
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
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: 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.
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
sibbe 
      
Beiträge: 50
WIN XP Prof
D7 Prof
|
Verfasst: 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!  ), würd ich sagen: prob gelöst
p.s. der vorige code war ziemliche sch**sse
|
|
|