Autor Beitrag
sibbe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

WIN XP Prof
D7 Prof
BeitragVerfasst: 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.
ausblenden 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 user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

WIN XP Prof
D7 Prof
BeitragVerfasst: 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:

ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

WIN XP Prof
D7 Prof
BeitragVerfasst: 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:
ausblenden 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; //hier können auch noch andere werte eingetragen werden, um z.b.
                           //in .txt zu formatieren
   SaveAs(OutFile,Filetyp);
   Close;
   Disconnect;
   Free;
  end;
  finally
    WA.Disconnect;
    WA.Quit;
    WA.Free;
  end;
end;


ein aufruf könnte dann so aussehen:

ausblenden 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