Szó helyett a megtalált szöveget eltávolítás

Szó helyett a megtalált szöveg törölve sorokat.

Helló Hogy mást (kivéve az alábbi módszerek) hatékonyan helyettesíthetik egy adott változó Word-e eltávolítja a dokumentum vonal, ahol a változó?
Működés alábbi kódot, működik, nagyon lassan, és ezért nem túl hatékony, még nagyon nagy dokumentumokat. (Én egy könyvjelző Delphi-> Szerverek)
a, b, Vstart, Vend, OldStr: OleVariant;
Szóhossz. j, k, n # 032; # 032; # 032 ;: egész szám;
KeyStop. logikai;
.
.
j # 032 ;: = 0;
KeyStop: = False;
n # 032 ;: =? // állítsa be a kívánt értéket
# 032; # 032; ismétlés
# 032; # 032; # 032; A: = j;
# 032; # 032; # 032; b: = j + n;
# 032; # 032; # 032; ha WordDocument1.Range (a, b) .text = oldStr akkor kezdődik
# 032; # 032; # 032; # 032; # 032; Vstart # 032 ;: = j;
# 032; # 032; # 032; # 032; # 032; Vend # 032; # 032 ;: = j + n;
# 032; # 032; # 032; # 032; # 032; KeyStop: = true;
# 032; # 032; # 032; végén;
# 032; # 032; # 032; Inc (j);
# 032; # 032; amíg (J = szóhosszúság-n) vagy (KeyStop = True);
WordDocument1.Range (Vstart, Vend) lehetőségre.Válassza; # 032;
WordApplication1.Selection.Delete (EmptyParam, EmptyParam);

, ahol szóhossz - hossza a szöveg a dokumentumban.

Pereinachit kérdés.
A Word97 dokumentum, akkor keresse meg egy adott vonalon, és jelölje ki azt a módon a fentiektől eltérő?

Akkor érdemes használni egy változata, mert a Find.Execute módszer egy kicsit hibás. Valami ehhez hasonló, például:

Rnge: = Doc.Content;
Rnge.Find.Execute (a "régi", Wrap: = wdFindContinue, ReplaceWith: = "new", Csere: = wdReplaceAll);

Tipp Deborah Pate



WordApp: = CreateOLEObject ( "Word.Application");
WordApp.Documents.Open (yourDocFile);
WordApp.Selection.Find.ClearFormatting;
WordApp.Selection.Find.Text: = yourOldStr;
WordApp.Selection.Find.Replacement.Text: = yourNewStr;
WordApp.Selection.Find.Forward: = True;
WordApp.Selection.Find.Wrap: = 1;
WordApp.Selection.Find.Format: = false;
WordApp.Selection.Find.MatchCase: = false;
WordApp.Selection.Find.MatchWholeWord: = false;
WordApp.Selection.Find.MatchWildcards: = true;
WordApp.Selection.Find.MatchSoundsLike: = False;
WordApp.Selection.Find.MatchAllWordForms: = false;
WordApp.Selection.Find.Execute (csere: = 2);

WordApp.ActiveDocument.SaveAs (yourNewDocFile);
WordApp.Quit;
WordApp: = Unassigned;

Mbo, köszönöm, de ez a szokásos módon helyettesíteni egy húr a másikra.
A kérdés pedig az, hogy megtalálják a megadott karakterláncot, és válassza ki az egészet.
WordDocument1.Range (a, b).

Expression nem fejezte utoljára.
Olyasmi, mint:
WordDocument1.Range (a, b) lehetőségre.Válassza

Tárgy volt, BTW: felváltja a megtalált szöveget eltávolítás

Megértem, hogy a második példában maradhat a vonalon
WordApp.Selection.Find.Text: = yourOldStr;

Nem. Ez csak kérni az egyik keresési paramétereket, de nem áll meg yourOldStr

Úgy döntöttem. Megjegyzik, egy jó dolog -, majd jön. Az adatok kerüljenek be a Word egyes tömb Store, korábban képzett.
var
oldStr, newStr, cserélje: OleVariant;
.
.
Cserélje: = 1;
ismétlés
Inc (lépés);
.
WordApplication1.Selection.Find.ClearFormatting; WordApplication1.Selection.Find.Replacement.ClearFormatting;
WordApplication1.Selection.Find.Text: = oldStr;
ha WordApplication1.Selection.Find.Execute (oldStr, EmptyParam. lecseréli) akkor kezdődik
ha Massif ^ [lépés] = „”, akkor // törlése a vonal, ha nincs adat
WordApplication1.Selection.Delete (EmptyParam, EmptyParam)
más
WordApplication1.Selection.TypeText (newStr); // Lehetővé teszi, hogy cserélje ki a húr hosszabb, mint 256 karakter
végén;
.
lépésig = FullStep

Memória: 0,74 MB
Idő: 0.027 c

Kapcsolódó cikkek