AGB  ·  Datenschutz  ·  Impressum  







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

Timer für ListBox

Ein Thema von lucy · begonnen am 25. Okt 2017 · letzter Beitrag vom 25. Okt 2017
Antwort Antwort
Seite 1 von 2  1 2      
lucy

Registriert seit: 25. Okt 2017
63 Beiträge
 
Delphi XE7 Starter
 
#1

Timer für ListBox

  Alt 25. Okt 2017, 08:23
Hallo,

habe eine Listbox, die unregelmäßig Datensätze empfängt.
Jeder Datensatz sollte sich genau 5 min. in der Listbox aufhalten, bevor dieser weiter kopiert wird.

Wie könnte man so etwas umsetzen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Timer für ListBox

  Alt 25. Okt 2017, 08:24
Von wo empfängt die Listbox die Daten? Ich würde dort ansetzen.
Markus Kinzler
  Mit Zitat antworten Zitat
bnreimer42

Registriert seit: 26. Mai 2013
Ort: Erlangen, Franken
124 Beiträge
 
Delphi 12 Athens
 
#3

AW: Timer für ListBox

  Alt 25. Okt 2017, 08:47
Wie wäre es, die Infos in einem Objekt zu speichern (Text und Zeitstempel), welches an den Elementen der Listbox hängt und dann über einen Timer regelmäßig ältere Elemente zu Löschen und weiterzusenden?
Björn Reimer
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Timer für ListBox

  Alt 25. Okt 2017, 08:56
Die Daten bei Ankunft in einem Objekt speichern, das als zusätzliches Feld die Ankunftszeit haben könnte. Oder nur die Daten in das Objekt und das dann mit der Ankunftszeit in einem Record oder einem anderen Container-Objekt speichern. Keine Ahnung was da sauberer ist.

Diese Records oder Objekte dann in einem Array oder einer Liste vewalten. Die ursprüngliche Listbox sollte nur zur Anzeige der Daten, nicht deren Verwaltung dienen.

Dann könntest du mittels eines Timers alle X Sekunden überprüfen ob ein Objekt schon 5 Minuten da ist (im Vergleich zur Ankunftszeit) und dass dann weiter verarbeiten. Wenn die Datenobjekte im Array oder der Liste nach Ankunftszeit sortiert sind brauchst du jeweils auch nur die obertsen Einträge der Liste prüfen.
Ralph
  Mit Zitat antworten Zitat
lucy

Registriert seit: 25. Okt 2017
63 Beiträge
 
Delphi XE7 Starter
 
#5

AW: Timer für ListBox

  Alt 25. Okt 2017, 09:03
Hallo;

folgendes zum Empfang -> "SocketClientRead" und dann schreibe ich
"ListBox1.Items.Add(msg1)" in die ListBox.

Wie überprüfe ich jeden Datensatz? Zum Beispiel mit einem Timer?
Würde dann eine Art Zeitstempel brauchen... ?
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#6

AW: Timer für ListBox

  Alt 25. Okt 2017, 09:23
Egentlich ist es gut das es bei dir gerade noch noicht funktioniert.

Eine Listbox ist ein GUI Element, und GUI Elemente dienen neben direkten Nutzereingaben besser NUR der Anzeige von Informationen.(im Klartext: man mißbraucht GUI-Elemente nicht als Datenspeicher)
Also unterlasse es deine Socketdaten direkt in die Listbox einzufügen! (Sockets haben meist auch was mit Threads zu tun und da funktioniert dein Code dann so eh nicht mehr)

Mache dir Gedanken was du zusätzlich zu deinen Empfangsdaten alles für Informationen für deine Programmlogik brauchst.
So erstellst du einen Datenelement-Record oder eine Datenelement-Klasse. Per TLIST<DatenelementRecord> würde im Einfachsten Fall daraus eine Liste wo es dann z.B. ein "Add" schon gäbe und du mit [Index] oder "for in" durchgehen durchgehen kannst.

Der Rest (z.B. dein Timing) ist Programmlogik, erst dann kommt das Darstellen in einer GUI Listbox oder das Abspeichern in eine z.B. Datenbank.

Geändert von mensch72 (25. Okt 2017 um 09:58 Uhr)
  Mit Zitat antworten Zitat
lucy

Registriert seit: 25. Okt 2017
63 Beiträge
 
Delphi XE7 Starter
 
#7

AW: Timer für ListBox

  Alt 25. Okt 2017, 10:07
Ok,
also lieber ein Memo anlegen?
Oder ist das Memo auch nicht geeignet?

Delphi-Quellcode:
var
  Rec: CustomRec;
begin
     Socket.ReceiveBuf(Rec,SizeOf(Rec));
     Memo1.Lines.Add(rec.Text)+(Zeitstempel);
end;
Wie würde die Überprüfung im Memo ablaufen? (Timer)

Delphi-Quellcode:
begin
 if Memo1. ...... then
  begin

  end;
end;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Timer für ListBox

  Alt 25. Okt 2017, 10:30
Hallo,
erzeuge eine Klasse mit den gewünschten Daten

type
TListBoxEintrag = class
AnzeigeText: String;
Zeit: TDateTime;
end;

Erzeuge beim Eintreffen neuer Einträge neue Objekte und speichere sie in einer TObjectList.

Diese Objekt-Liste wird per Timer "bereinigt" (alte Elemente > x Minuten) fliegen raus.
Danach wird die ListBox neu gefüllt.
Heiko
  Mit Zitat antworten Zitat
lucy

Registriert seit: 25. Okt 2017
63 Beiträge
 
Delphi XE7 Starter
 
#9

AW: Timer für ListBox

  Alt 25. Okt 2017, 10:49
Es sollen aber nicht alle Daten rausfliegen!
Nur der Datensatz, der seit fünf Minuten vorhanden ist.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Timer für ListBox

  Alt 25. Okt 2017, 11:08
Es sollen aber nicht alle Daten rausfliegen!
Nur der Datensatz, der seit fünf Minuten vorhanden ist.
Wenn ich das von Hand machen müßte, dann würde einen Stapel erstellen
:Hole_Nachricht
auf den ich die eingehenden Nachrichten lege.
Dann würde ich mir die unterste anschauen ob die schon 5 Minuten im Stapel ist. Wenn ja wird sie herausgenommen. Das mache ich so lange bis die unterste Nachricht weniger als 5 Minuten im Stapel liegt.
goto Hole_Nachricht

so ungefähr

Gruß
K-H

vergessen:
Zwischendurch muß ich natürlich den Inhalt des Stapels anzeigen (lassen).
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:31 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