Iskanje po StringList

Odpiranje, tiskanje, pisanje v datoteke in drugo.
Odgovori
WebMajstr
Prispevkov: 56
Pridružen: 11.01.2006 23:12:59

Iskanje po StringList

Odgovor Napisal/-a WebMajstr » 14.01.2006 15:56:50

Pozdrav.

Z naslednjo kodo dobim šteivlko vrstice le, če kot iskalni pogoj vnesem celotno vrstico, če pa samo del, pa dobim -1 (ne najde)

Koda: Izberi vse

 
procedure TForm1.OdpriBazo;
var strList : TStringList;
begin
 strList:=TStringList.Create;
 try
   strList.LoadFromFile('rtrr_vse.txt');
   Memo2.Lines.text:=inttostr(strList.IndexOf('300000004455246'));
 finally
   strList.Free;
 end;
end;
 
1 vrstica datoteke je: 23423300000004455246234234. Zdej pa če est vpišem v indexOf samo 300000004455246 mi ne najde, če pa 23423300000004455246234234 pa najde. kako nj poišem tevilko vrstice samo z delom vrstice?

gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

Iskanje po StringList

Odgovor Napisal/-a gabr » 14.01.2006 16:14:52

S for greš čez cel TStringList in za vsak element pogledaš, če se začne s tvojim nizom.

Pozdrav,
Gp

=WinGpT= I've formatted...and I can't boot up!
OpenBSD SI: http://obsd.17slon.org, http://obsd.17slon.org/list

Genius
Prispevkov: 390
Pridružen: 12.08.2003 10:23:13

Iskanje po StringList

Odgovor Napisal/-a Genius » 14.01.2006 16:20:14

funkcija IndexOf ne najde podniza v stringa ampak če se ujema celotna vrstica s podanim nizom in vrne index.

WebMajstr
Prispevkov: 56
Pridružen: 11.01.2006 23:12:59

Iskanje po StringList

Odgovor Napisal/-a WebMajstr » 14.01.2006 16:22:58

S for?

hm, mal se še lovim v delphiju, lohka na hitr napišeš primer kako mislš?

blspider
Prispevkov: 562
Pridružen: 13.01.2002 15:18:31

Iskanje po StringList

Odgovor Napisal/-a blspider » 14.01.2006 16:35:19

V editorju napiši besedo "for", se postavi na njo ter pritisni tipko F1.
Z zanko se sprehodiš od vrstice 0 do vrstice strList.Count - 1.
V helpu si poglej še "string handling routines" kjer najdeš različne funkcije za delo z stringi (npr. pos).
Vse skupaj ti ne bi smelo vzeti prevec časa :)

Lp, Rok

Edit: Typo
Zadnjič spremenil blspider, dne 14.01.2006 16:36:15, skupaj popravljeno 1 krat.

Genius
Prispevkov: 390
Pridružen: 12.08.2003 10:23:13

Iskanje po StringList

Odgovor Napisal/-a Genius » 14.01.2006 16:38:28

Če je že tako je tukaj en primerček:

Koda: Izberi vse

   for i:=0 to list.Count-1 do
  begin
  if pos('Iskani podniz',list.ValueFromIndex[i]) > 0 then
    memo2.Lines.Add(IntToStr(i))
  end; 

gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

Iskanje po StringList

Odgovor Napisal/-a gabr » 14.01.2006 21:44:50

Nenenene, za primerjat za primerjat začetke stringov se uporablja StrLComp.

Pozdrav,
Gp

=WinGpT= Unable to locate Coffee -- Operator Halted!
OpenBSD SI: http://obsd.17slon.org, http://obsd.17slon.org/list

blspider
Prispevkov: 562
Pridružen: 13.01.2002 15:18:31

Iskanje po StringList

Odgovor Napisal/-a blspider » 14.01.2006 22:26:51

Gabr: Pa sej (če prav razumem) on noče iskati po začetku :S

gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

Iskanje po StringList

Odgovor Napisal/-a gabr » 14.01.2006 22:40:35

Imaš prav - sem uspel narobe razumet originalno vprašanje.

V tem primeru je Pos() seveda natanko prava funkcija.

Pozdrav,
Gp

=WinGpT= Two Wrongs Don't Make A Right, But Three Do
OpenBSD SI: http://obsd.17slon.org, http://obsd.17slon.org/list

WebMajstr
Prispevkov: 56
Pridružen: 11.01.2006 23:12:59

Iskanje po StringList

Odgovor Napisal/-a WebMajstr » 15.01.2006 19:53:40

tnx fantje, carji ste :)

Odgovori