Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Word Zugriff per Ole -- zunehmend langsamer (https://www.delphipraxis.net/90839-word-zugriff-per-ole-zunehmend-langsamer.html)

Bernhard Geyer 25. Apr 2007 11:28

Re: Word Zugriff per Ole -- zunehmend langsamer
 
Zitat:

Zitat von stifflersmom
Ich weis auch momentan noch nicht, ob nicht die Übergabegeschwindigkeit von Word der wahre Pferdefuß ist.

Hier bringt es was statt späte Bindung mit OleVariant frühe Bindung über die Typbibliothek zu verwenden. Auch war es bei älteren Windows-Versionen so das späte Bindung nur eine bestimmte Anzahl von Aufrufen verkraftet hat.

stifflersmom 25. Apr 2007 12:18

Re: Word Zugriff per Ole -- zunehmend langsamer
 
Zitat:

Hier bringt es was statt späte Bindung mit OleVariant frühe Bindung über die Typbibliothek zu verwenden. Auch war es bei älteren Windows-Versionen so das späte Bindung nur eine bestimmte Anzahl von Aufrufen verkraftet hat.
ok, das werde ich mal ausprobieren, mal sehen, ob ich das auf die Schnelle umgesetzt bekomme.

Moin

stifflersmom 25. Apr 2007 14:42

Re: Word Zugriff per Ole -- zunehmend langsamer
 
So, nun bin ich's leid.
Der "wortweise" Zugriff ist irgendwie nicht der richtige Weg.
Jetzt gehe ich einfach die Holzhammermethode:
Word aufrufen
Dokument als tmp. Textdatei speichern
Word-Dokument schließen

Anschließend die tmp. Textdatei laden und irgendwie verarbeiten.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
StartDir := extractFilePath(ParamStr(0));
mV := CreateOleObject('Word.Application');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mV.Quit;

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  ZL,Zl2 : TStringList;
  I : Integer;
begin
   If OpenDialog1.Execute Then
    Begin
    ZL := TStringList.Create;
    Zl.Sorted := CheckBox2.Checked;
    If Not CheckBox1.Checked Then
    Zl.Duplicates      := dupIgnore;

    Zl2 := TStringList.Create;
    Zl2.Sorted := Zl.Sorted;
    Zl2.Duplicates := Zl.Duplicates;
     
     mV.Visible := False;                          // Das klappt nicht wirklich!
     mV.Documents.open (FileName:=OpenDialog1.FileName, ConfirmConversions:=False, Format:=wdOpenFormatAuto) ;
     mV.ActiveDocument.SaveAs (FileName:=StartDir+'TMPFB.TXT', FileFormat:=wdFormatText, AddToRecentFiles:=True) ;
     mV.Documents.Close;
     
     Memo1.Lines.LoadFromFile(StartDir+'TMPFB.TXT');       // Ab hier ist erst mal alles richtige Baustelle...
     Zl.DelimitedText:=Memo1.Lines.Text;
     DeleteFile(StartDir+'TMPFB.TXT');
     For I :=0 To zl.Count-1 Do
      Zl2.Add(Trim(Zl[i]));
     Memo1.Lines.Assign(ZL2);
     Zl.Free;
     Zl2.Free;
     End;
end;
Übrigens, hat jemand 'n Tipp für mich,
dass wenn ich mit einem Word-Dokument verbinde,
Word NICHT im Hintergrund angezeigt wird?

Moin


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:02 Uhr.
Seite 2 von 2     12   

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