AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListBox

Ein Thema von cherry · begonnen am 4. Sep 2006 · letzter Beitrag vom 4. Sep 2006
Antwort Antwort
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

ListBox

  Alt 4. Sep 2006, 11:04
Hi..

Ich will überprüfen ob der Eintrag den ich in die ListBox eintragen will,
schon vorhanden ist.

Dazu habe ich mir mal folgendes zurechtgelegt:

Delphi-Quellcode:
  for i:= 1 to ListBox3.Items.Count do
  begin
   if (ListBox3.Items.ValueFromIndex[i] = Edit2.Text) then
    ShowMessage('Strasse schon ausgewählt...')
   else
    ShowMessage(ListBox3.Items.ValueFromIndex[i]);
  end;
Leider funktioniert dies nicht!
Folgendes Szenario habe ich debugt:

Ich füge einen Eintrag ein z.B. 'asdf'
Die Schleife durchläuf nicht, weil die ListBox noch leer ist, also Items.Count = 0

Dann füge ich nochmals 'asdf' ein.
Die schleife wird einmal durchlaufen, weil Items.Count = 1

Komisch ist jetzt, das das Naximum des ListenIndexes(1) überschritten wurde (laut Fehlermeldung)
und warum ist jetzt i = 256 und nicht i = 1 wie das eigentlich sein müsste...

Naja, das stellt sich sicherlich bald heraus, bin schon gespannt!
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#2

Re: ListBox

  Alt 4. Sep 2006, 11:12
warum nicht

Delphi-Quellcode:
if (Listbox1.items.indexof(edit1.text)=-1) then
  Listbox1.items.add(edit1.text);
wenn du lieber die einzelnen einträge durchgehen willst (z.B. wegen Groß/Kleinschreibung) musst du bedenken, dass das erste item den Index 0 hat.

Delphi-Quellcode:
function EntryExists(items:TStrings;Text:string):boolean;
var i:integer;
    lc:string;
begin
  result:=false;
  lc:=AnsiLowerCase(Text);
  for i:=0 to items.count-1 do
  begin
    if lc=AnsiLowerCase(items.strings[i]) then result:=true;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not entryexists(Listbox1.items,edit1.text) then
    Listbox1.items.add(edit1.text);
end;
Gruß Frank
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: ListBox

  Alt 4. Sep 2006, 11:13
Ist der gesuchte Wert komplett identisch mit den werten in der Liste? dann kannst du das mit .IndexOf machen und kannst die die Schleife sparen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#4

Re: ListBox

  Alt 4. Sep 2006, 11:14
Hi,

der Index ist 0-basiert, beginnt also nicht bei 1, sondern bei 0.
Entweder for i:=0 to ...count-1 oder ...[i-1]

Schau Dir mal Delphi-Referenz durchsuchenIndexOf an
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: ListBox

  Alt 4. Sep 2006, 11:18
Vielen Dank euch allen...
Ich glob ich nehm dann die kürzere Variante

THX
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz