AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Word Zugriff per Ole -- zunehmend langsamer
Thema durchsuchen
Ansicht
Themen-Optionen

Word Zugriff per Ole -- zunehmend langsamer

Ein Thema von stifflersmom · begonnen am 24. Apr 2007 · letzter Beitrag vom 25. Apr 2007
 
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
375 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Word Zugriff per Ole -- zunehmend langsamer

  Alt 24. Apr 2007, 17:24
Hallo,

ich habe mir gerade als aktuelles projekt vorgenommen,
eine lokale Datenbank zu erstellen, die sämtliche in einem
(natürlich auch mehrere) Worddokument vorkommenen Wörter aufnimmt,
damit man anschließend über eine Wortsuche schneller die betreffenden
Dokumente aufgelistet bekommt, als es z.B. die bordeigene Suche von
Windows schafft.
Nun aber zu meinem "Problem":
Ich verbinde mich mit einem Worddokument und gehe dann alle
Wörter in dem Dokument durch um diese dann später mal zu verarbeiten,
allerdings ist es so, dass die Verarbeitungsgeschwindigkeit der
Wörter zunehemnd abnimmt, je weiter sich die Routine dem Dokumentende
nähert.
Hier mal mein bisheriger "Versuchscode":
Delphi-Quellcode:
procedure TForm1.bt_OpenWordDocClick(Sender: TObject);
Var
V :OleVariant;
Docs, ItemIndex: OleVariant;
ConFirmConversions,
OpenReadOnly :OleVariant;
LinesCount : Integer;
Zl : TStringList;

begin
If OpenDialog1.execute Then
 Begin
 Screen.Cursor := crHourGlass;
 Zl := TStringList.Create;
 
 If CheckBox2.Checked Then
 Zl.Sorted := True;
 
 If Not CheckBox1.Checked Then
 Zl.Duplicates := dupIgnore;
 
 Memo1.Lines.Clear;
 EditDocFile.Text := OpenDialog1.FileName;
 ProgressBar1.Visible:= True;
 
  try
    ItemIndex := 1;
    try
      Wordapplication.Visible := False;
      Wordapplication.Connect;
    except
      MessageDlg('Word ist nicht auf diesem Rechner installiert', mtError, [mbOk], 0);
      Abort;
    end;

      Docs := (EditDocFile.Text);
      ConFirmConversions:= False;
      OpenReadOnly := True;

      WordApplication.Documents.Open(Docs,ConFirmConversions,OpenReadOnly,EmptyParam,
      EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
      EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

      WordDocument.ConnectTo(WordApplication.Documents.Item(ItemIndex));
      ProgressBar1.Max := WordDocument.Words.Count;

    // Alle Wörter durchgehen
    For LinesCount := 1 To WordDocument.Words.Count Do
     Begin
     ProgressBar1.Position := LinesCount;
     V:=WordDocument.Words.Item(LinesCount).Text;
     V:= trim(V);
     If Length(V) > 1 Then
     Zl.Add(V);
     End;
  except
    on E: Exception do
    begin
      ShowMessage(E.Message);
      WordApplication.Disconnect;
    end;
    
  end;
   ProgressBar1.Visible := False;
// WordApplication.Disconnect;
   Memo1.Lines.Assign(Zl);
   Zl.Free;
   Screen.Cursor:= crDefault;
 end;
end;
Jetzt also die Gretchenfrage, ist mein Vorhaben so überhaupt sinnvoll realisierbar,
oder ist der Zugriff per Ole 'n schlechter Ansatz?
Ich bin für alle Vorschläge offen.

Moin
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz