![]() |
Steuerzeichen beim einlesen von der COM-Schnittstelle
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich habe ein Programm geschrieben, mit dem ich aus einer Brandmeldeanlage den Ereignisspeicher als Textdatei drucken kann. ich lese die Daten direkt von der COM-Schnittstelle ein und gebe sie in einem Memo aus. Leider hat die Datei Steuerzeichen am Anfang jeder Zeile und bei Umlauten. Wie kann ich das ändern. (siehe Anhang) MFG Jens :wall: |
Re: Steuerzeichen beim einlesen von der COM-Schnittstelle
Guten Morgen,
für die vorderen und hinteren Steuerzeichen würde sich trim(s:String) anbieten. Die Umlaute willst Du sie nur rauswerfen oder durch darstellbare Zeichen ersetzen. Zum Prüfen ob ein Zeichen ein alphanumerisches Zeichen oder Steuerzeichen ist, kannst Du isCharAlpha(c:char) verwenden. Grüße Klaus |
Re: Steuerzeichen beim einlesen von der COM-Schnittstelle
Schau mal nach, in welchem Format die Anlage die Daten liefert. Wenn sie z.B. in Ascii liefert, musst es nach ANSI konvertieren, damit Dein Programm es richtig anzeigt. Vielleicht die Daten mal in einem Hexeditor anschauen.
|
Re: Steuerzeichen beim einlesen von der COM-Schnittstelle
Wenn dir die Steuerzeichen nicht gefallen kannst du sie einfach ersetzen (zum Beispiel mit StringReplace)
|
Re: Steuerzeichen beim einlesen von der COM-Schnittstelle
Sorry,
vieleicht stehe ich mir momentan ein bißchen auf der Leitung, wie kann ich den feststellen ob das Format (ich vermute) ASCII ist. MFG Jens |
Re: Steuerzeichen beim einlesen von der COM-Schnittstelle
Speicher doch mal einen Auszug aus der Datei als txt ab und häng sie hier an.
|
Re: Steuerzeichen beim einlesen von der COM-Schnittstelle
Liste der Anhänge anzeigen (Anzahl: 1)
Hier der Anhang,
Die Datei als txt |
Re: Steuerzeichen beim einlesen von der COM-Schnittstelle
Also am Anfang einer Zeile steht immer #13#10. Das ist ein Linefeed + Zeilenumbruch. Ist unter Windows eigentlich Standard. Ich vermute, dass das Memofeld nur ein Zeichen davon als Zeilenumbruch interpretiert.
Für die Umlaute: Ich denke, es wird die Codepage 852 benutzt: ![]() Du musst also eine Funktion suchen, die Dir die Codepage umrechnet. Gruß, Jens |
Re: Steuerzeichen beim einlesen von der COM-Schnittstelle
Hallo,
die Schnittstelle sendet vielleicht mit ![]() hexWert 9A -> Ü 41 6C 6C 65 20 9A 62 65 72 74 72 61 67 75 6E 67 73 65 69 6E 72 2E 0D 0D Alle šbertragungseinr Die Zeichen am Zeilenanfang sind 0D0A. Grüße Klaus |
Re: Steuerzeichen beim einlesen von der COM-Schnittstelle
Die Text Datei in Memo1 kopiert:
Delphi-Quellcode:
Ausgabe:
procedure TForm1.Button1Click(Sender: TObject);
var sl : TStringList; i : Integer; begin sl := TStringList.Create; try sl.AddStrings(Memo1.Lines); for i := 0 to sl.Count -1 do begin sl[i] := trim(StringReplace(sl[i], #$D, '', [rfReplaceAll])); sl[i] := StringReplace(sl[i], #129, 'ü', [rfReplaceAll]); sl[i] := StringReplace(sl[i], #132, 'ä', [rfReplaceAll]); sl[i] := StringReplace(sl[i], #142, 'Ä', [rfReplaceAll]); sl[i] := StringReplace(sl[i], #148, 'ö', [rfReplaceAll]); sl[i] := StringReplace(sl[i], #153, 'Ö', [rfReplaceAll]); sl[i] := StringReplace(sl[i], #154, 'Ü', [rfReplaceAll]); sl[i] := StringReplace(sl[i], #10#13, ' ', [rfReplaceAll]); if sl[i] <> '' then Memo2.Lines.Append(SL[i]); end; finally sl.Free; end; end; 102 01.02.00 21:05 ID: 2 Codebetrieb EIN Codebetrieb 103 01.02.00 21:05 ABSCHALT. äUEE Alle Übertragungseinr. 104 01.02.00 21:05 ABSCHALT. äSG Alle Steuergruppen 105 01.02.00 21:05 ABSCHALT. äZ-TBL usw. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 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-2025 by Thomas Breitkreuz