Ich mal wieder,
ich habe ein Problem mit dem Auslesen einer Textdatei.
So lese ich die Datei aus:
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:
| procedure TEinstellenForm.BtnsendClick(Sender: TObject);
begin sl := TStringList.Create; sl.LoadFromFile(TxtPfad); s:=0; l:=1; showmessage(inttostr(sl.Count)); SerialPortNG1.Active:= True; end;
procedure TEinstellenForm.SerialPortNG1RxClusterEvent(Sender: TObject); begin if l < sl.Count then begin EinstellenForm.SerialPortNG1.SendString(sl[l]); ListBox1.items.add(sl[l]); SerialPortNG1.ClearRxDQueue; end; l:=l+2;
end; |
Das funktioniert soweit erstmal , also die Stringlist enthält dann auch die Daten.
Jetzt aber das Problem:
MB FeuererhaltungŒ
So stehen die Daten in dem Textfile(nochmal angehängt)
4D421300010008204665756572657268616C74756E67068C
MB Vorw„rmphase .
4D4213000100092020566F727784726D706861736520062E
MB Znden M
4D42130001000A20202020205A816E64656E20202020044D
MB Fehlzndung Ä
4D42130001000B20204665686C7A816E64756E67202005C4
Es soll nur jede zweite Zeile gesendet werden.
Er sucht sich beim Auslesen der Textdatei warscheinlich das Zeichen $0A als Zeilenende Indikator.
Das ist aber bei mir ein Zeichen im String und so kommt es eben vor das er in de rZzeile verrutscht und dann Mist sendet.
Gibts da ne Möglichkeit das anders zum machen? Das Zeilenende ist durch die 2 Byte Checksumme gekennzeichnet also zum Beispiel 068C, das sind einfach alle Bytes aufsummiert.
Joa falls wer ne Idee hat, her damit.
Grüße Christian