AGB  ·  Datenschutz  ·  Impressum  







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

Command Line Hinzufügen & Parsen

Ein Thema von Salomon · begonnen am 25. Okt 2002 · letzter Beitrag vom 25. Okt 2002
Antwort Antwort
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

Command Line Hinzufügen & Parsen

  Alt 25. Okt 2002, 10:46
Hallo,
ich brauche mal wieder eure Hilfe bei einem Commandozeilen-Interpreter.
Ich füge in eine Listbox eine CommandLine ein, die aus einem Datum, einer Uhrzeit und den Schaltzuständen meiner Relaisplatine besteht.

Commandozeile:
Code:
30.10.2002 | 17.24.22 | 00000000 | Beschreibung
Und nun kommen die Probleme für die ich Lösungsansätze brauche

Hinzufügen neuer Commandozeilen:

1. Wenn eine neue Commandozeile hinzugefügt werden soll, muss geprüft werden, ob das Datum nicht schon überschritten ist.

2. Die Commandozeilen müssen so eingefügt werden, dass sie Chronologisch von oben nach unten abgearbeitet werden können.

Parsen der Commandozeilen in der Listbox:

Hier brauche ich überwiegend Lösungsvorschläge.
Wenn ich mit einem Timer jede Sekunde die gesammte Listbox durchgehe und checke, ob ich etwas ausführen muss, wird das Programm sehr langsam.
Vor allem wenn man eine lange Liste von Aufträgen in der Listbox hat.

Mfg
Salomon
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#2
  Alt 25. Okt 2002, 11:49
Hallo!

Also, um die Werte zu sortieren, musst du zunächst mal eine Funktion schreiben, die dir die (Start-?)Zeit einer Kommandozeile ausgibt bzw. berechnet (Hinweis auf die Funktionen WordCount & ExtractWord aus den RXUtils sowie auf die Funktionen StrToDate & StrToTime). Diese Funktion benutzt du dann, um deine Einträge in der Liste zu sortieren.
Sobald du deine Liste sortiert vorliegen hast (Sortieralgorithmen findest du ebenfalls in diesem Forum), musst du ja sowieso nur noch den ersten Eintrag in der Liste prüfen, alle anderen kommen ja später dran.

Cu,
Udontknow
  Mit Zitat antworten Zitat
wwerner

Registriert seit: 5. Aug 2002
18 Beiträge
 
#3
  Alt 25. Okt 2002, 12:06
Noch ein Tip:
- Suche den nächsten Schaltauftrag
- Berechne die Zeitdifferrenz zur aktuellen Zeit
- Starte einen Timer mit der Zeitdifferenz
- Wenn das Timerereignis eintritt Auftrag ausführen und das ganze von vorne

Gruß

WW
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#4
  Alt 25. Okt 2002, 12:21
Schonmal ein Danke für die Vorschläge.

Mit dem Sortieren komme ich noch nicht klar, kann man den die TDateTime Daten mit den "<" u. ">" Operatoren vergleichen?

Und wie greife ich auf den Text eines Items zu? So geht es irgendwie nicht:
Code:
  for i :=1 to auftragslist.Count -1 do
   begin
    if auftragslist.Items[i].text = (copy (CmdLine,1,21)) then
      showmessage ('schon vorhanden');
   end;
Mfg Salomon
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 25. Okt 2002, 12:44
Moin Salomon,

die Items einer Listbox sind vom Typ TStrings, ergo lass' mal das .Text weg (was Dir der Compiler wohl auch vorgeschlagen haben dürfe, wenn auch nicht so direkt )

Ausserdem muss die Schleife bei 0 beginnen (der Endwert stimmt ja).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#6
  Alt 25. Okt 2002, 12:44
OK, die <> Opertoren kann ich schonmal zum Vergleich der Daten nutzten.

Aber wie ich auf den Text eines Items zugreife habe ich noch nicht raus, dabei sollte das doch so einfach sein...
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#7
  Alt 25. Okt 2002, 13:23
Die Abfragen ob das Datum gültig ist, und ob es den Eintrag schon gibt habe ich nun fertig, nun kann es ans sortieren gehen.

In dem Sortier Algorithmen Tutorial gibt es ja jede Menge Auswahl, welchen Algorithmus würdet ihr mir für meine Aufgabe empfehlen?

Ich muss in den ListItems ja jedesmal zwei Werte (Datum, Zeit)vergleichen.

Mfg Salomon
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
wwerner

Registriert seit: 5. Aug 2002
18 Beiträge
 
#8
  Alt 25. Okt 2002, 13:35
Wandele dein Datum und die Zeit in ein TDateTime um, dann hast du nur noch einen Wert zu vergleichen. Und dann gibt es in TStinglist die Funktion sort. Bitte mal in der Hilfe anschauen

Gruß

WW
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:22 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