Autor |
Beitrag |
patrick dee
      
Beiträge: 311
Win 98SE, WinXP
D3,D6
|
Verfasst: Mi 02.10.02 16:44
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
_________________ Glauben heißt nichts wissen ...
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mi 02.10.02 16:49
Hallo,
vesulche mal:
Quelltext 1:
| Label1.Caption := IntToStr(ListBox1.Items.Count); |
Gruß
Klabautermann
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: 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 !!!
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
majolo
      
Beiträge: 334
Ubuntu 8.04, WinXP Prof.
D1, D6Pers, D7 Prof., D8 Prof., D2005 Pers
|
Verfasst: Mi 02.10.02 17:49
hatte mal dazu einen ähnlichen Thread:
www.auq.de/viewtopic.php?t=2406
Vielleicht hilfts.
Gruss
majolo
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mi 02.10.02 18:04
@peterlustig !!!
super !!! jetzt hab ich wieder was dazugelernt !!! danke !!!
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
patrick dee 
      
Beiträge: 311
Win 98SE, WinXP
D3,D6
|
Verfasst: 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.
So hier mein code für meine Playliste :
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.
_________________ Glauben heißt nichts wissen ...
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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>
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: 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ß
|
|