Powtarzanie się nazw w ListBoxie

0

Witam
Co zrobic żeby w ListBoxie niepowtarzały się nazwy? Chodzi mi oto zeby np. nie było razy Marcin. Mógłby sie wtedy wyświetlac komunikat.

Pozdrawiam--Pozdrawiam
Marcin Bloch
Delphi6

0

Witam!
Ta procka:

procedure TForm1.Button1Click(Sender: TObject);
var
S:String;
K:Boolean;
I:Integer;
begin
S:=Edit1.Text;
K:=False;
I:=0;
if (ListBox1.Items.Count=0) then ListBox1.Items.Add(S) else
begin
while not K do
begin
if ListBox1.Items[I]=S then
begin
K:=True;
ShowMessage('Podana nazwa "'+S+'" już figuruje na liście!');
end else Inc(I);
if I=Listbox1.Items.Count then
begin
ListBox1.Items.Add(S);
K:=True;
end;
end;
end;
end;

wpisuje do listboxa1 text z edita1 po uprzednim sprawdzeniu czy Listbox juz go nie zawiera.
Byc moze nie jest to najszybszy sposób ale działa. NA poczatek sprawdza czy listbox jest
pusty, jesli tak to zapisuje do niego zmienna s bez sprawdzania. Jezeli ListBox zawiera juz
jakies elementy to jest sprawdzany przez petle while. Kazdy element listy jest porownywany
ze zmienna s. Jezeli program natrafi na taki sam element na liscie to przerywa petle i
wyswietla komunikat. W przeciwnym razie zwieksza o 1 zmienna I (Inc(I)), ktora jest
w tym przypadku swoistym licznikiem petli ;-). Jezeli I=Listbox1.Items.Count tzn. osiagniety zostal ostatni element listy czyli takiego elementu nie ma w ListBox to S jest zapisywany do listy. Zdecydowalem sie na petle while a nie np. na for bo w ten sposob czasem da sie uniknac przeszukiwania wszystkich elementow listy i nike trzeba przerywac petli przy pomocy break co
podbno jest nieeleganckie ;-). Aha, pamietaj ze w liscie nie moze byc "Marcin" i "Marcin", ale np. "Marcin" i "marcin" beda zapisane bo petla uwzglednia wielkosc liter. Zeby to ominac to
trzeba przed porownaniem zamienic litery w lancuchach teskstowych na ta sama wielkość np.
przy pomocy funkcji LowerCase i uwzglednic polskie litery jak bedzie potrzeba to moge to opisac.
Mam nadzieje ze cos pomoglem, byc moze jest jakis szybszy sposob?
--Pozdrawiam
Ojciec

1 użytkowników online, w tym zalogowanych: 0, gości: 1