![]() |
Schleife mit Timer
Hallo,
hallo ich muss mehrere Strings zeitversetzt aus einer Stringlist versenden. wenn ich innerhalb eines Timers in einer for schleife die Strings versenden will arbeitet er im OnTimer ereignis die komplette Schleife ab. Wie kann ich es hinbekommen das er innerhalb des Timmers nur den nächsten Eintrag aus der Stringlist abarbeitet? Ich stehe da auf dem Schlauch |
AW: Schleife mit Timer
Hallöle...8-)
:dp: Willkommen im Club... Zitat:
|
AW: Schleife mit Timer
Du brauchst einen globalen Zähler für Deine StringList.
Im Timer-Event den Zähler jedesmal +1 hochzählen lassen bis er max. StringList.Count entspricht. Frage beantwortet? |
AW: Schleife mit Timer
Zitat:
//edit falls von Dir noch Versionsbedingte Fragen kommen, ist es hilfreich dem Forum im Benutzerkonto die genutzte Delphi Version bescheid zu geben. |
AW: Schleife mit Timer
Wenn du die Liste abarbeiten willst und die Einträge danach nicht mehr brauchst, wäre TStack<T> oder TList<T> auch eine Option.
Delphi-Quellcode:
uses
System.Generics.Collections FList: TList<String>; var lErsterEintrag := FList.Extract( FList.First); var lLetzterEintrag := FList.Extract( FList.Last); Zitat:
|
AW: Schleife mit Timer
Zitat:
|
AW: Schleife mit Timer
vielen Dank für die Unterstützung, ich probiere eure Vorschläge das gleich mal aus
|
AW: Schleife mit Timer
nur hingedaddelt:
Delphi-Quellcode:
// irgendwo die Stringliste laden
StringList.LoadFromFile('dateiname'); // Timer.Tag auf "Startwert" = 1. Eintrag in der Stringliste setzen. Timer.Tag := 0; // Timer aktivieren, wenn was in der Stringliste ist. Timer.Enabled := StringList.Count > 0; // Timerroutine: procedure TForm1.TimerTimer(Sender: TObject); begin // Timer deaktivieren, damit er nicht bei der Verarbeitung eines Listeneintrages startet ... Timer.Enabled := false; // Den Eintrag der Liste, der der Position des aktuellen Wertes von Timer.Tag entspricht, verarbeiten. Mache_was_mit_Stringlisteintrag(StringList[Timer.Tag]); // Den Wert von Timer.Tag um 1 erhöhen, für die Verarbeitung des nächsten Eintrages. Timer.Tag := Timer.Tag + 1; // Den Timer aktivieren, sofern noch nicht das Ende der Liste erreicht wurde. Timer.Enabled := Timer.Tag < StringList.Count; end; |
AW: Schleife mit Timer
.. alternativ (wenn möglich) den versendeten Eintrag aus der StringList entfernen
und dann immer den Eintrag aus Index 0 versenden Grüße Klaus |
AW: Schleife mit Timer
Zitat:
Auch nett mit auto-shut-off feature :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz