Delphi 7 - hľadanie záznamu - Locate - VarArrayOf
V Delphi som hľadať potrebný záznam v Table a riešil som to takto:
RecNo := 0;
while (RecNo < RecordCount) and (id <> Fields[7].AsInteger) do
RecNo := RecNo + 1;
if id <> Fields[7].AsInteger then id := -1;
Všetko bolo v poriadku, až na jeden detail. Po otvorení súboru z disku (v programe) sa takto hľadal správny riadok tabuľky. Na moje zdesenie, tabuľka mala pôvodne dva záznamy a po tomto mala 4. Tretí a štvrtý boli opakovanie prvého a druhého. Zrejme bol problém v tom, že RecNo nadobudol privisoké hodnoty. Zmenil som teda druhý riadok na:
while (RecNo < RecordCount - 1) and (id <> Fields[7].AsInteger) do
No a pre zmenu po prvom riadku tabuľky nasledoval opäť prvý a ako tretí bol pôvodný druhý.
Rozhodol som sa použiť funkciu Locate:
if Locate('ID', id, []) then id := -1;
Delphi nič nenašlo. Tak som to napísal takto (podľa helpu):
if Locate('ID', VarArrayOf([id]), []) then id := -1;
Delphi ma odbíja tým, že nepozná VarArrayOf. V helpe nie je žiadna knižnica a vyzerá to na normálnu funkciu.
Viete mi, prosím, teda niekto poradiť, prečo prvý zápis Locate nejde a prečo mi to nepozná VarArrayOf?
Tady mas priklad na hledani v tabulce:
Funkce VarArrayOf() je definovana v unite Variants, takze pridat do Uses
Jasné, ďakujem. Kašlem na Locate. O rýchlosť tu rozhodne nejde. Len to musí fungovať.
Len sa chcem spýtať ešte:
Ten zápis s Locate som mal dobre?
Podle vseho ano, az na to prirazeni, kde melo podle vseho byt:
if not Locate() then id := -1;
Áno, už mi funguje aj Locate. Ponechal som radšej dlhší zápis (aspoň mu lepšie rozumiem). Časom sa naučím na Locate.