-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
21. Nov 2008
(p > 0 ) and // '*' gefunden?
(not AusnahmenFinden(ausnahmen, copy(str, 1, p) )) and // keine ungewollten strings vor '*'
then begin
if p < length(str) then begin
if (str <> ' ') then begin//'*' ist nicht das letzte zeichen aber steht alleine
Result := LineIdx;
SelectLine( Memo, LineIdx );
end;
end else begin //'*' ist das letzte zeichen
Result :=...
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
21. Nov 2008
wie gesagt, für solche ausnahmen musst du dir nen array bauen
in dem fall wäre das mit
if (pos('/', str) > 0) and (pos('/', str) < pos('*', str))
vermutlich gelöst, aber es gibt bestimmt noch mehr solcher fälle
also bauen wir uns ne funktion ;)
function AusnahmenFinden(arr: array of string; value: string): boolean;
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
21. Nov 2008
hap
ich hab als Suchstring jetzt permanent '*' angenommen, der wird also nicht mehr übergeben.
MyLastFindLine := SuchenInMemo( Memo1, Edit2.Text, MyLastFindLine )
müsste also reichen
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
21. Nov 2008
(str <> '*') AND//'*' steht alleine?
muss da hin ;)
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
21. Nov 2008
ups^^, p: integer hätte das heissen sollen ;)
Der code ist übrigens nicht getestet weil ich grad garkein Delphi da hab.
Benutzung also auf eigene Gefahr :twisted:
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
21. Nov 2008
na dann...
mit pos:
function SuchenInMemo( Memo : TMemo; NichtFindenStr : string; LastFindLine : integer = -1 ) : integer;
var
LineIdx : integer;
str: string;
p: integer;
begin
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
21. Nov 2008
Da brauchst du ja eigentlich keinen code für.
Du musst ja nur den "*" suchen und schaun ob er alleine steht oder das nächste zeichen auch ein "*" ist.
Dann findest du alles was "*" endet.
Du könntest auch Delimited text mit "*" als delimter aufrufen.
Dann hättest du eine stringlist in der in jeder zeile ein string steht der mit "*" endete.
Das Problem ist halt das da tatsächlich alles...
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
21. Nov 2008
-.-
Also du willst quasi eine wildcard suche.
Das ist aber nicht ganz einfach weil eine wildcard nunmal für alles stehn kann.
Ein paar Einschränkungen wären ganz praktisch.
Wenn zum beispiel nur "u0".."u9" vor dem "*" stehn dürfte wär das relativ einfach zu lösen.
Aber "alles mögliche" ist verdammt viel.
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
21. Nov 2008
*auchcodeklau*
if
( Pos( FindenStr, Memo.Lines ) > 0 ) and
( Pos( NichtFindenStr, Memo.Lines ) = 0 )
then
das ist doch (fast) genau was diese Abfrage macht.
Nur sucht sie im gesamten String und nicht nur vorher.
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
19. Nov 2008
Hast du meinen code überhaupt mal getestet?
Ich hab grad ein mini Program damit geschrieben und das funktioniert soweit.
Sind zwar ein paar fehler drin, zum beispiel ist die selection ein paar character daneben weil am ende jeder zeile noch ein $0D0A steht das bei length() ignoriert wird, aber in seltext steht was drin und es wird auch die richtige Zeile gefunden.
SelStart und SelLength...
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
18. Nov 2008
da fehlt ein oder etwas in der art am ende des stringreplace.
Aber das markiert dir immernoch nicht deine zeile :)
Momentan fällt mir da nichts ein ausser SelStart auf die summe Längen aller zeilen bis zur gefundenen zu setzen und SelLength auf die Länge der dieser Zeile...
Und das auch nur wenn ich SelStart richtig verstanden hab^^
procedure SelectLine (Memo: TMemo; index: integer);...
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
18. Nov 2008
huch
da fehlen die ) bei den pos ;)
Kommt davon wenn man blind kopiert^^
for i:= 0 to memo1.lines.count-1 do begin
if pos(edit1.text, memo1.lines) <> 0 then begin
if pos(edit2.text, memo1.lines) <> 0 then begin
find = false;
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
18. Nov 2008
Was mir auffällt ist das find nicht deklariert ist.
Die hab ich einfach aus deinem Code oben übernommen also musst du die auch noch irgendwo herholen ;)
Das ignoriert aber den zweiten suchtext
Es soll ja nur irgendwas getan werden wenn dieser in der Zeile nicht vorhanden ist.
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
18. Nov 2008
Quellcode ist auch nicht immer sortiert ;)
Aber bei c++ ist soweit ich weiss auch jeder Befehl mit ; geschlossen also hast du da zur not nen 1A delimiter.
Bei suchtext1 kommt rein wonach du suchst.
Wenn das in edit1.text steht muss das dahin ;)
i ist als schleifenindex wohl ein integer^^
-
Forum: Sonstige Fragen zu Delphi
Delphi
by HenKst,
18. Nov 2008
Hallöle und willkommen in der DP (das wollt ich schon immer mal sagen ;) )
Hast dus schonmal mit pos() probiert?
So nach dem schema
for i:= 0 to memo1.lines.count do -1 begin
if pos(suchtext1, memo1.lines) <> 0 then begin
if pos(suchtext2, memo1.lines) <> 0 then begin
find = false;
end else begin