Mega Code Archive

 
Categories / Delphi / Functions
 

How to use the spell check functionality from word

Title: How to use the spell check functionality from word uses Word2000; function TForm1.IsSatzZeichen(c: CHAR): Boolean; begin case c of '(': Result := True; ')': Result := True; ' ': Result := True; '.': Result := True; ',': Result := True; '!': Result := True; '?': Result := True; '-': Result := True; ':': Result := True; ';': Result := True; #$D: Result := True; #$A: Result := True; else Result := False; end; end; procedure TForm1.CheckText(Memo: TMemo); var i: Integer; MySelStart: INTEGER; Token: string; Line: string; ReplaceStr: string; WordList: TStrings; varFalse: OleVariant; begin // L?uft Word? if EXE_Running('WINWORD.EXE', False) then begin if mrYes = MessageDlg('Word ist ge?ffnet.' + #13 + #10 + 'F¨¹r die Rechtschreibpr¨¹fung muss Word beendet werden.' + #13 + #10 + '' + #13 + #10 + 'Word abschiessen?', mtWarning, [mbYes, mbNo], 0) then begin KillTask('WINWORD.EXE'); end; end else begin // Startwerte i := 1; Line := Memo.Text; WordList := TStringList.Create; // Memo traviersieren und einzelne W?rter (Token) rausholen while not (Line[i] = #0) do begin Token := ''; // Tokem zusammenstellen while not IsSatzZeichen(Line[i]) do begin Token := Token + Line[i]; Inc(i); end; if Token '' then begin // Token speichern WordList.Add(Token); end; if IsSatzZeichen(Line[i]) then begin // "Token" speichern WordList.Add(Line[i]); Inc(i); end; end; // Verbindung zu Word aufbauen WordApp.Disconnect; WordDoc.Disconnect; WordApp.Connect; WordApp.Visible := False; // Leeres Dokument erzeugen WordDoc.ConnectTo(WordApp.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam)); MySelStart := 0; // WordList traversieren und auf Rechschreibung pr¨¹fen for i := 0 to WordList.Count - 1 do begin if not IsSatzzeichen(Wordlist[i][1]) then begin WordApp.Visible := False; // WordDokumentinhalt l?schen WordDoc.Range.Delete(EmptyParam, EmptyParam); // Token in Word einf¨¹gen WordDoc.Range.Set_Text(WordList[i]); // Rechtschreibpr¨¹fung aufrufen WordApp.Visible := False; WordDoc.CheckSpelling; WordApp.Visible := False; // Resultat von der Rechtschreibpr¨¹fung holen und aufbereiten ReplaceStr := WordDoc.Range.Get_Text; WordApp.Visible := False; ReplaceStr := ReplaceString(ReplaceStr, #$D, ''); // Neues Wort in Memo einf¨¹gen Memo.SetFocus; Memo.SelStart := MySelStart; Memo.SelLength := Length(WordList[i]); Memo.SelText := ReplaceStr; WordList[i] := ReplaceStr; end; MySelStart := MySelStart + Length(WordList[i]); end; MessageDlg('Rechtschreibpr¨¹fung abgeschlossen.', mtInformation, [mbOK], 0); // Verbindung zu Word abbrechen und Word schliessen ohne zu speichern WordDoc.Disconnect; WordApp.Disconnect; varFalse := False; WordApp.Quit(varFalse); end; end; procedure TForm1.Button1Click(Sender: TObject); begin // Rechtschreibpr¨¹fung durchf¨¹hren CheckText(Memo1); end;