So es ist mal wieder so weit, ich habe ein Problem bei dem ich nicht weiterkomme.
Ersteinmal zu den Grundlagen.
Ich möchte ein Programm schreiben, das Daten aus der seriellen Schnittstelle auswertet. Dabei handelt es sich um Zeiten einer Carrerarennbahn.
Über den ComPort kommen Datensätze die aus 12 stelligen Zahlen bestehen.
1. Ziffer: Spieler (1 oder 2)
2. bis 4. Ziffer: Rundenzahl (001 bis 999)
5. bis 12. Ziffer: Zeit in tausendstel Sekunden (0 bis 99999999)
und hier das programm:
Delphi-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:
| procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer); var Daten, Spur, Runde, Zeit : String; Z : LongInt; begin ComPort.ReadStr(Daten, Count); Memo.Text := Memo.Text + Daten; Spur := leftstr(Daten,1); Runde := midstr(Daten,2,3); Zeit := midstr(Daten,5,8); Z := StrToInt(Zeit); if spur = IntToStr(1) then begin label3.caption := runde; label5.caption := inttostr(Z); end else begin label8.caption := runde; label10.caption := inttostr(Z); end; end; |
Das aufteilen des Strings in die einzelnen Daten (Spieler, Runde, Zeit) ist kein Problem.
Jedoch habe ich ein Problem den Sring 'Zeit' in einen LongInteger umzuwandeln. Diesen Wert würde ich später noch für andere Unterprogramme benötigen.
Beim testen des Programms kommt immer die Fehlermeldung: " ********(belibige Ziffern) ist kein gültiger Integer Wert. "
Wo liegt nun mein Fehler?
LG Krish
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt