Ein Blick in den Quelltext von TRichEdit bestaetigt die Vermutung, dass
in diesem Fall die Online-Hilfe fehlerhaft ist.
TCustomRichEdit = class(TCustomMemo)
...
public
...
function FindText(const SearchStr: string;
StartPos, Length: Integer; Options: TSearchTypes): Integer;
...
end;
Es ist also keine Procedure sondern eine Function, die als Ergebnis
Result := SendMessage(Handle, EM_FINDTEXT, Flags, LongInt(@Find));
zurueckliefert.
Stichwort EM_FINDTEXT:
Return Value
Returns the zero-based character position of the next match, or - 1 if
there are no more matches.
> Bei "Startpos" und "Length" weiss
> ich nicht genau, was da von mir erwartet wird, also gebe ich da
> jeweils den Wert 0 an.
> Ich vermute mal, dass ich in diesen Variablen die Position erhalte, an
> der der String gefunden wurde?
Nein, denn dann haette in der Proc.definition ein "var" dringestanden.
Du kannst ja auch nur in einem vom Anwender markierten Bereich des
Textes suchen lassen, dieser wird durch StartPos und Length festgelegt.
Um also den gesamten Text zu durchsuchen musst Du StartPos auf 0 und
Length auf die Gesamtlaenge des Textes setzen.
> Wenn ja, wie werte ich das Ergebnis so
> aus, dass der gefundene String markiert wird?
Du bekommst einen Zeiger auf die Position des gefundenen Textes. Diesen
weist Du SelStart zu und die Laenge des Suchbegriffes weist Du SelLength
zu. Noch ein kleines
SendMessage(RichEdit.Handle, EM_SCROLLCARET, 0, 0);
hinterher, und der gefundene Text wird angezeigt.
P.S. Alles obige hab ich nicht getestet sondern nur aus der Hilfe und
den Sourcen zusammengetragen.
Felix
> Allerdings habe ich da ein kleineres Problem: ich bekomme kein
> Ergebnis.
> Laut Onlinehilfe sieht der Aufruf ja folgendermassen aus:
>
> procedure FindText(const SearchStr: string; StartPos, Length: Integer;
> Options: TSearchTypes); Integer;
In den mitgelieferten Demos findest Du Beispiele, wie die
Suchen/Ersetzen-Funktionen eingesetzt werden müssen...
Bye,
Detlef.
Patrick von der Hagen <patrick...@cww.de> schrieb im Beitrag
<33b01946...@news.cww.de>...
> On 24 Jun 1997 07:35:05 GMT, "Detlef Meister"
> <Mei...@rz.fhtw-berlin.de> wrote:
>
> >In den mitgelieferten Demos findest Du Beispiele, wie die
> >Suchen/Ersetzen-Funktionen eingesetzt werden müssen...
> Tut mir ja leid, aber da habe ich beim besten willen nichts gefunden,
> was mir weiterhelfen wuerde. Da hatte zwar ein Datenbank-Bespiel auch
> eine Such-Funktion, aber das laesst sich nicht auf mein Problem mit
> der trichedit-komponente anwenden.
> Oder habe ich da doch noch etwas uebersehen?
Ich habe meine Demos inzwischen alle gelöscht, daher kann ich Dir den Pfad
nicht sagen. Aber ich weiß genau, daß in irgendeinem Beispiel ein
TRichEdit-Editor dabei war. Mann, suche doch einfach mal alle '*.pas'
Dateien mit der Explorer-Funktion Suchen durch. Als Suchtext gibst Du ein:
"TRichEdit" oder auch Search, Find, Replace
usw.........................................................................
...........................
Bye,
Detlef.
Hi erstmal, ich bin ja auch noch da.
>Hallo Detlef,
>
>>Ich habe meine Demos inzwischen alle gelöscht, daher kann ich Dir den Pfad
>>nicht sagen. Aber ich weiß genau, daß in irgendeinem Beispiel ein
>>TRichEdit-Editor dabei war. Mann, suche doch einfach mal alle '*.pas'
>>Dateien mit der Explorer-Funktion Suchen durch. Als Suchtext gibst Du ein:
>>"TRichEdit" oder auch Search, Find, Replace
>
>Die Editor-Demo von Delphi 2.0 bietet keine Suchfunktion. In der Demo
>von Delphi 1.0 ist sie schon zu finden, dabei gab es da noch nicht
>einmal die entsprechende Methode :-)
Also, ich freue mich erstmal, auch von unabhaengiger Seite bestaetigt
zu bekommen, dass ich nicht zu bloed bin, das richtige Demo zu finden,
sondern dass bei Delphi 2 ein Demo mit entsprechender Suchfunktion
fehlt. Das war Punkt 1.
Jetzt zu Punkt 2: Ich habe mir gerade die Delphi 2 CD genauer
angesehen und dort die Demos von Delphi 1 gefunden, unter anderem das
Demo "Textdemo", bei dem es sich um einen kleinen editor mit
Suchfunktion handelt. Das werde ich mir in aller Ruhe ansehen und ich
gehe mal davon aus, das sich meine Probleme damit loesen lassen
werden.
Punkt 3: offensichtlich habe ich nicht alles Mails zu diesem Thread
bekommen, denn Sven antwortet hier auf eine Mail von Detlef, die ich
leider nie bekommen habe.
Ich werde also mal meinem Provider aufs Dach steigen und moechte mich
entschuldigen, falls ich auf ein wichtiges Posting in diesem Thread
nicht geantwortet haben sollte. Tut mir leid, aber die Mails klemmen
halt mal wieder.
OK, das waere dann auch schon alles.
CU,
Patrick.
Auch wenn Du nicht vom Anfang an suchst, macht es nix, daß die Länge dann
eigentlich zu groß ist.
Gunar Scholz <gsc...@imedia.de> schrieb im Beitrag
<33B02B...@imedia.de>...
> Patrick von der Hagen wrote:
> >
> > On Mon, 23 Jun 1997 21:32:16 +0200, Gunar Scholz <gsc...@imedia.de>
> > wrote:
> >
> > >Du kannst ja auch nur in einem vom Anwender markierten Bereich des
> > >Textes suchen lassen, dieser wird durch StartPos und Length
festgelegt.
> > >Um also den gesamten Text zu durchsuchen musst Du StartPos auf 0 und
> > >Length auf die Gesamtlaenge des Textes setzen.
>
> > Ich wusste ja gar nicht, dass man den zu durchsuchenden Bereich
> > beschraenken kann. IMHO eine recht interessante Moeglichkeit. Aber ein
> > Problem haette ich da noch: um den gesamten Text zu durchsuchen, muss
> > ich die Gesamtlaenge des Textes kennen, aber ich kenne leider keine
> > Moeglichkeit, die Gesamtlaenge zu ermitteln. Wie kann ich das machen?
>
> Tut mir leid, dazu hatte ich in der Schnelle nichts gefunden. Ich kann
> diese Frage nur mal so hier im Raum stehen lassen, in der Hoffnung, das
> einer dazu was passendes weiss.
>
> Felix
>
--
mario....@usa.net
http://ourworld.compuserve.com/homepages/MarioFischer
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i
mQCNAzOMNjkAAAEEAJ34143zGloqOXLvWxe5lWdUFHTaE0dsb7qXoZmHHQ73XesZ
tQdtE/E6/8h6hfMgscclqvuRAf+kOZBDMg6deMrkT8oZvbm2/iJusFQa6yWSXeEi
5tC6kY+JPo1w47p2OYgRU8j4IeZRgSJfD6AY5q8Xz98IS+EK500w7W6cgm29AAUR
tCVNYXJpbyBGaXNjaGVyIDxtYXJpby5maXNjaGVyQHVzYS5uZXQ+iQCVAwUQM4w2
OU0w7W6cgm29AQEJZwP+Pjgh9ZtcByn5dlItIoj3q75RM4Q9P4PdiDKNUgcYQOTV
UQT6gWZ1gnwEsUnddh4L/chtcPIm8ySlYCB+zdr60k1xxQQtp61ul6YiuIIi2vU3
X7/c0qs4gWPqAt0kzs+EufC8/xRcl2LxXjM0LRYMwLeNp0p6qV6Mid280EDu8oM=
=HbzG
-----END PGP PUBLIC KEY BLOCK-----