Autor |
Beitrag |
110022
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: Mi 19.12.07 17:46
ich möchte dass mein prgramm einen string aus nem editfeld in einer listbox such.
wenn es gefunden wurde wir es markiert, aber wie ?? Moderiert von Christian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 19.12.2007 um 16:48
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 19.12.07 17:51
Hallo!
Schaue Dir mal die ListBox.Items.IndexOf-Methode an. Außerdem kannst Du über ListBox.Selected[idx] := true den Eintrag mit dem Index "idx" markieren.
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Mi 19.12.07 17:51
Wie viele Thread brauchst Du zum gleichen Thema?
siehe hier
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Silas
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Mi 19.12.07 17:52
Wenn du jeweils nur ein Item markieren möchtest, geht das über ListBox.ItemIndex.
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: Mi 19.12.07 17:59
wie würde das denn aussehen?
in etwa so?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button10Click(Sender: TObject); var suchw:string; i: integer; begin suchw:=edit1.Text; for i:=1 to listbox1.items.count do if pos(suchw, listbox1.items[i-1]) > 0 then listbox1.itemindex; end; end;
end. |
aber ich bin mir sehr sicher dass alles falsch ist
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mi 19.12.07 18:02
Hast Du dir Christian S. Beitrag durchgelesen?
Die Zählung bei der Listbox beginnt übrigens bei 0, d.h. Deine Schleifen läuft wenn überhaupt nur bis count - 1.
//edit: Ich empfehle Dir zudem dringenst(!) Dir unbekannte Funktionen in der DOH nachzuschlagen. (Markieren + F1)
Grüße
Marc
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: Mi 19.12.07 18:10
hilft mir grade nich weiter.
wie gehts richtig?
muss morgen das info projekt fertig haben.
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mi 19.12.07 18:18
Wie wäre es mit etwas Eigenständigkeit?
Du benötigst weder eine Schleife noch POS!
Was du brauchst sind lediglich:
• Listbox.Items.IndexOf();
• Listbox.ItemIndex
Das solltest Du nun aber verknüpfen können.
cu
Marc
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: Mi 19.12.07 18:21
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mi 19.12.07 18:23
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mi 19.12.07 18:23
Zeig uns doch mal Deinen Ansatz. Wo hakt es denn? Was funktioniert nicht?
Zitat: | sry aber leider nich |
Sagt leider nicht allzu viel aus.
edit: Yogu, das habe ich schlichtweg ich überlesen.
cu
Marc
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: Mi 19.12.07 18:28
Also:
ich habe das hier
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button10Click(Sender: TObject); var suchw:string; i: integer; begin suchw:=edit1.Text; for i:=1 to listbox1.items.count do if pos(suchw, listbox1.items[i-1]) > 0 then listbox1.itemindex; end; end;
end. |
und will das der text aus einem edit feld in der listbox gesucht und markiert wird.
wenn er nicht gefunden wird kommt ne kleine meldung.
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mi 19.12.07 18:33
Den Code hast Du doch bereits gepostet und die Begriffe hast Du dir auch noch nicht angeschaut.
Delphi-Quelltext 1: 2: 3: 4:
| suchw:=edit1.Text; for i:=1 to listbox1.items.count do if pos(suchw, listbox1.items[i-1]) > 0 then Listbox1.itemindex := i - 1; |
Nun wird jeweils das letzte gefundende Element markiert!
Ich denke, das sollte als Denkanstoß reichen.
Grüße
Marc
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mi 19.12.07 18:37
Folgender Code reicht doch vollkommen aus:
Delphi-Quelltext 1: 2:
| if ListBox.IndexOf(String) >= 0 then ListBox.ItemIndex := ListBox.IndexOf(String); |
Alle anderen Lösungen sind eigentlich unnötig kompliziert.
Bitte beachtet, dass ich aus Sicherheitsgründen meinen Code verbessert habe. Durch diesen kleinen Bug entstand folgendes Missverständnis.
Zuletzt bearbeitet von Yogu am Do 20.12.07 17:41, insgesamt 3-mal bearbeitet
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mi 19.12.07 18:38
Vielleicht soll er es aber mit einer For-Schleife lösen.
Es soll Lehrer geben, die auf nicht bereits fertige Funktionen stehen - sprich auf Selbst-Geschriebenes, bei dem auch noch der Ablauf erkannbar ist.
cu
Marc
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mi 19.12.07 18:45
Ich denke nicht, dass das selektieren eines Eintrags in einer Liste das Hauptthema des Projekts ist. Da würd man doch wohl solche Funktionen benutzen dürfen. Man kann natürlich auch das ganze in Assembler schreiben, am besten noch dazu ein OS, auf dem man das Programm zum Laufen bringt. Dann hat man alles selber gemacht 
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 19.12.07 18:49
Die Methode über IndexOf ist nicht das Gleiche wie die Methode über Schleife+Pos. Bei letzterem wird auch ein Eintrag gefunden, der den gesuchten String nur enthält aber nicht identisch ist.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: Do 20.12.07 15:35
---hier stand nichts brauchbares von mir  ---
---diesen eintrag nicht beachten ---
Zuletzt bearbeitet von 110022 am Do 20.12.07 16:05, insgesamt 1-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 20.12.07 15:43
Zeige mir das Wort "IndexOf" in Deinem Quelltext
Und beschäftige Dich mal mit Grundlagen!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: Do 20.12.07 15:45
ich meine nur wie das hier richtig geht
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var w:string; begin w:=edit1.text; if ListBox1.ItemIndex(w) >= 0 then ListBox1.ItemIndex := ListBox1.ItemIndex(w); end;
FEHLER
[Fehler] Unit1.pas(33): Operator oder Semikolon fehlt [Fehler] Unit1.pas(34): Operator oder Semikolon fehlt |
Zuletzt bearbeitet von 110022 am Do 20.12.07 15:57, insgesamt 1-mal bearbeitet
|
|