Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - ListBox Fraaaaageeee
patrick dee - Mi 02.10.02 16:44
Titel: ListBox Fraaaaageeee
hallo
habe folgende einträge in der listbox stehen
8500
6500
0000
8887
8975
nun meine Frage wie kann ich in einem Label anzeigen wievile Einträge es mit 8 gibt. also wie oben steht müßtze Label 1.Caption 8 anzeigen. Also nur zählen wenn das erste zeichen eine 8 ist alle anderen nicht.
danke
patrick dee
Klabautermann - Mi 02.10.02 16:49
Hallo,
vesulche mal:
Quelltext
1:
| Label1.Caption := IntToStr(ListBox1.Items.Count); |
Gruß
Klabautermann
Christian S. - Mi 02.10.02 16:56
Hi!
Ich verstehe nicht ganz, was Du machen möchtest. Wenn ich Deinen letzten Satz anschaue, möchtest Du folgendes: du möchtest zählen, wieviele Items als erstes Zeichen eine 8 haben, oder?
Geh doch einfach alle Items durch und erhöhe einen Zähler um eins, wenn das erste Zeichen '8' ist.
Also so:
Quelltext
1: 2: 3: 4: 5: 6:
| VAR i, anzahl : INTEGER; begin anzahl:=0; for i:=0 TO ListBox1.Items.Count-1 do if (ListBox1.Items[i])[1] = '8' then Inc(anzahl); end; |
ACHTUNG: Habe den Code einfach so hingeschrieben, ohne ihn zu testen!
MfG,
Peter
matze - Mi 02.10.02 17:42
ist das wirklich so, dass man da einfach ListBox1.Items[i])[1] nehem kann und dann das erste zeichen bekommt ??
Ich würds zur sicherheit per COPY machen !!!
Christian S. - Mi 02.10.02 18:02
@Matze: jetzt hattest Du mich so verunsichert, dass ich es ausprobiert habe. Und ja, es funktioniert.
@patrick dee:
solltest Du vielleicht doch die Einträge zählen wollen, die generell eine '8' enthalten, solltest Du mit Pos('8',ListBox1.Items[i]) arbeiten.
MfG,
Peter
matze - Mi 02.10.02 18:04
@peterlustig !!!
super !!! jetzt hab ich wieder was dazugelernt !!! danke !!!
patrick dee - Mi 02.10.02 20:22
Es geht fast :
ABER ERST EINMAL D A N K E AN ALLE WIRKLICH SUPER WIE SCHNELL ES HIER ANTWORTEN GIBT. :P
So hier mein code für meine Playliste :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| procedure THaupt_Form.ComboBox1Change(Sender: TObject); var Found : boolean; i : integer; x : integer; anzahl: integer; begin
Found := False; if( ComboBox1.Text = '24 Uhr' )then begin with ListBox1.Items do begin BeginUpdate; Clear; for i := 0 to Playliste.Count - 1 do Add( Playliste.Strings[ i ]); EndUpdate; end; Abort; end; i := 0; with ListBox1.Items do begin BeginUpdate; Clear; while not Found and( i < Playliste.Count )do begin if( Pos( ComboBox1.Text, Playliste.Strings[ i ]) > 0 )then begin Inc( i ); while not( Pos( ' Uhr', Playliste.Strings[ i ]) > 0 )do begin Add( Playliste.Strings[ i ]); Inc( i ); end; Found := True; end else Inc( i ); end; //---------------- alle 8000 Einträge zählen um die Titel f. die Stunde zu bekommen ------ anzahl:=0; for x:=0 TO ListBox1.Items.Count-1 do if (ListBox1.Items[x])[1] = '8' then Inc(anzahl); StatusBar1.SimpleText := ' Titel für diese Stunde ' + (IntToStr(anzahl));
EndUpdate; end; end; // ComboBox1Change |
Wenn ich nun in der ComboBox die 24 Stunden aufrufe also die Liste
für den Tag stürzt mein Programm ins Nirvana ab und es wird nichts gezählt. Was ist da noch faul ????
UND GANZ WICHTIG :
wie kriege ich es hin das zb ein Timer immer kurz vor der nächsten Stunde also Beispiel es ist jetzt 20:59:59 dann soll die Liste für die nächste Stunde geladen werden usw. Wenn es 23:59:59 ist soll die für den nächsten Tag geladen werden.
Laden tue ich meine Listen so :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure THaupt_Form.Programm11Click(Sender: TObject); var datum : string; begin datum:= FormatDateTime('dd-mm-yy',NOW); with Playliste do begin BeginUpdate; Clear; LoadFromFile( Tools_Form.edit1.text + datum + '.pl1' ); Prog_Label.Caption := 'Prog. 1'; EndUpdate; end; |
Also Thanks für EURE super Hilfe. Und wie geht das mit der Pos Geschichte ????????????
euer
patrick dee
(03.10.02 00:55 Tino) Code-Tags hinzugefügt.
Christian S. - Mi 02.10.02 21:06
Hi!
patrick dee hat folgendes geschrieben: |
Wenn ich nun in der ComboBox die 24 Stunden aufrufe also die Liste
für den Tag stürzt mein Programm ins Nirvana ab und es wird nichts gezählt. Was ist da noch faul ????
|
Ich weiß natürlich nicht genau, was dein Programm machen soll, aber müsste durch das Abort; nicht das ganze beendet werden, bevor er überhaupt zum Zählen kommt? Ich habe Abort; noch nie benutzt, aber ich könnte es mir vorstellen.
patrick dee hat folgendes geschrieben: |
wie kriege ich es hin das zb ein Timer immer kurz vor der nächsten Stunde also Beispiel es ist jetzt 20:59:59 dann soll die Liste für die nächste Stunde geladen werden usw. Wenn es 23:59:59 ist soll die für den nächsten Tag geladen werden
|
Timer ist genau das Stichwort. Du packst einen Timer auf deine Form, der jede Sekunde die aktuelle Uhrzeit überprüft und bei Bedarf die Prozedur zum Laden der Liste startet. .... So ungefähr zumindest.
Patrick Dee hat folgendes geschrieben: |
Und wie geht das mit der Pos Geschichte ????????????
|
Es war einmal ein Pos ... Nein, okay, Pos(substring, string) gibt Dir, wenn Substring in String enthalten ist, die Position des ersten Zeichens von Substring im String. Kommt Substring nicht im String vor, gibt Pos 0 zurück.
MfG,
Peter
<edit>
Rückst Du Deinen Quelltext nicht ein, oder schluckt das Forum das Einrücken nur, wenn Du die Codemarkierungen verwendest?
</edit>
Tino - Do 03.10.02 00:55
Peter Lustig hat folgendes geschrieben: |
Rückst Du Deinen Quelltext nicht ein, oder schluckt das Forum das Einrücken nur, wenn Du die Codemarkierungen verwendest? |
Ja, Leerzeichen am Anfang einer Zeile werden entfernt. Wenn man den Sourcecode in Code-Tags einschließt bleiben sie erhalten.
Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!