Delphi - Listbox a Edit

Delphi - Listbox a Edit
0

Hej,

Utknąłem i mam taki problem:

Mam ListBox-a, Edita i Button-a. Do ListBox-a wczytuje mi Items-y z pliku txt. Teraz pytanie, jak zrobić, aby to co wpiszemy w Edit-a, po przyciśnięciu Button-a zostało porównane z poszczególnymi Items-ami, i jeśli któryś Items będzie taki sam jak wpisane słowo do Edit-a, to wtedy przejdzie do następnego Form-a.

Pozdrawiam
Cunter

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0
Kopiuj
Pos   PosEx

madmike
  • Rejestracja:prawie 20 lat
  • Ostatnio:ponad 5 lat
0
Kopiuj
var
  x : integer;
  newForm : boolean;
begin
  newForm := false;
  for x := 0 to ListBox1.ItemsCount - 1 do
    if Edit1.Text = ListBox.Items[x] then
      newForm := true;

  if newForm then
    Caption := 'Przechodzę do nowej formy';

Patryk27
Warto by dodać 'break'.
madmike
Coś do roboty pytającemu muszę jednak zostawić :)
Patryk27
Przecież dałeś mu gotowiec, a to break, to tylko dla optymalizacji ;-)
madmike
Jak sam dopisze, to będzie mógł mówić, że sam zrobił - wiem, break powinno być, ale to przykład. Równie dobrze może być repeat until czy while bez break :)
ZI
  • Rejestracja:prawie 22 lata
  • Ostatnio:około miesiąc
  • Postów:192
0

a nie prościej :

Kopiuj
if ListBox1.Items.IndexOf(Edit1.Text) then newForm.Show;
madmike
Z tym, że powyższe ma i na przyszłość - np. jeśli warunekiem jest występowanie w itemach danego ciągu znaków (niedawno coś takiego tu było). Identycznym algorytmem będzie szukał także po tablicach
SI
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 11 lat
  • Postów:184
0
zibicoder napisał(a)

a nie prościej :

Kopiuj
if ListBox1.Items.IndexOf(Edit1.Text) then newForm.Show;

Może i prościej, ale kompilator na to: Type of expression must be BOOLEAN.

madmike
> -1, chyba tylko z rozpędu zapomniał...
olesio
Wiadomo - wystarczy dodac ... > -1 i już nie będzie tego błędu, ale sprawdzanie przez IndekxOf ignoruje wielkośc znaków.
ZI
  • Rejestracja:prawie 22 lata
  • Ostatnio:około miesiąc
  • Postów:192
0

Sorry, w pośpiechu pisane i zręki...

edytowany 1x, ostatnio: zibicoder
madmike
Przynajmniej zadający pytanie miał okazję poczytać a nie tylko kopiować :)
0

OK. Dzięki wszystkim. Dzięki waszym pomysłom udało mi się dokończyć program :)

Jeszcze raz dziękuję

I pozdrawiam

Cunter

0
simplex napisał(a):
zibicoder napisał(a)

a nie prościej :

Kopiuj
if ListBox1.Items.IndexOf(Edit1.Text) then newForm.Show;

Może i prościej, ale kompilator na to: Type of expression must be BOOLEAN.

Kopiuj
if (ListBox1.Items.IndexOf(Edit1.Text) > -1) then newForm.Show;
flowCRANE
Po co odkopujesz dwuletni wątek? Na dodatek w tym wątku padły już trafne odpowiedzi...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.