Mały/wielki problem z wyszukiwaniem tekstu...ale troszeczkę inaczej:
ogólnie ma to wyszukać ustalone słowo w tekście, po znalezieniu, wyciąć to słowo i kontynuować dalsze szukanie znak po znaku - tworząc w tym czasiekolejny string - aż do momentu gdy nie natrafi na znak przerywający dalsze szukanie. Następnie wrzuceniu tak utworzonego ciągudo TTreeView jako tekst.
Innymi słowy odszukaniu nazwy funkcji, procedury, typu...itp.
Grzebnąłem coś takiego:
procedure TFrmMain.ScanLine;
var licz1,licz2, licz3 : integer;
linia,slowo : string;
Nazwa : string;
SrOpt : TSynSearchOptions;
// punkt : TPoint;
// lista : TStrings;
const TypeName : array[1..5] of string = ('Procedure','Function','Type','Var','Const');
BreakType : array[1..5] of char = (';' , '(' , ')' , '=', ',');
begin
ObjExplorer1.Items.Clear;
srOpt:=[];
for licz1:=1 to Length(SynEdtExplorer1.Lines.Strings[licz1]) do //od jednego do długości linii
begin
SynEdtExplorer1.TopLine:= licz1 - 1;
linia:=SynEdtExplorer1.Lines.Strings[licz1]; //wczytaj linie
licz2:=1; //ustaw drugi licznik
repeat
begin
slowo:=TypeName[licz2];
if SynEdtExplorer1.SearchReplace(slowo,'',srOpt)<>0 //do licznika podstaw wynik szukania
// if licz3<>0 //jeśli cośznalazł
then begin
slowo:=linia;
licz3:=1; //skopiuj linie i
Delete(slowo,1,Length(TypeName[licz2])); //przytnij o długość wyszukanego wyrazu
if Length(slowo)>0 then //jeśli coś jeszcze zostało
//case char
while licz3 <= Length(slowo) do //to pomijamy spacje i zobaczmy co
begin
case slowo[licz3] of //jesli jest "przerywnik"
';' :break; // to przerwij :))
',' :break;
'(' :break;
')' :break;
'=' :break;
else if slowo[licz3]<>' ' //w przeciwnym razie
then Nazwa:=Nazwa+slowo[licz3] //jedziemy znak po znaku i
else break; //tworzymy string, ktory...
ObjExplorer1.Items.Add(nil,slowo); //...trzeba dodac do TTreeView
licz3:=licz3+1;
end;
end;
SynEdtExplorer1.TopLine:= licz1 - 1;
licz2:=licz2+1;
end;
end;
until licz2<=5;
end;
end;
Pytanie: dlaczego to nie chce zadziałać?? Przepisywałem już tą procedurę kilkanaście razy w różny sposób...i nic. GDZIE JA ROBIE BŁĄD???
niby wszystko jest logiczne...ale nie działa....
Hellp
// Uzywaj tagu delphi, a nie code..