![]() |
Text/Zahlen auf mehrere Editfelder aufteilen
Hallo, bin neu hier im Forum.
bin ein blutiger Anfänger, meine Grundkenntnisse reichen gerade so für die Basics in TurboPascal und Delphi aus meiner Schulzeit(über 15 Jahre her:roll:). Ich möchte ein Programm schreiben, dass ich für die Arbeit nutzen kann, es soll im Grunde genommen eine erleichterung für mich und meine Kollegen sein eine Diagnose so übersetzten. Diese wird nur in HEX in 2er Grüppchen ausgegeben und besteht aus mehreren Zeilen, wobei jeweils eine Zweiergruppe einen bestimmten Zustand eines Anlagenteils ausgibt. Ich benutze dafür die aktuelle Version von Lazarus auf Windoof. Nun mein Problem: ich möchte gerne die ganze Zeile kopieren und in das erste Edit-Feld einfügen, dabei sollen nur jeweils 2 Zeichen pro Feld eingefügt werden. Bsp.: der HEX-Code sieht so aus "01 00 02 05 FF 04 09" diesen möchte ich nur per Copy & Paste in 7 Editfelder einfügen.... wie stelle ich das an? |
AW: Text/Zahlen auf mehrere Editfelder aufteilen
Wenn ich dich richtig verstehe, dann hast du einen String mit jeweils 7 Hex Zahlen und die willst du in 7 Editfelder bringen?
Du kannst mit copy die ersten 2 Zeichen aus dem String lesen und ins 1. Editfeld bringen. Dann das Leerzeichen löschen und wieder 2 Zeichen lesen. Dies dann ins 2. Editfeld bringen, u.s.w. Ist das so in etwas das, was du willst? |
AW: Text/Zahlen auf mehrere Editfelder aufteilen
im grunde ja,
ich möchte die ganze HEX-Zeile kopieren, dann rechtsklick ins erste Edit-Feld und Einfügen... Dann sollen in jedem Editfeld 2 Stellen stehen. |
AW: Text/Zahlen auf mehrere Editfelder aufteilen
![]() ![]() Aber eigentlich reicht Copy, also jeweils 2 Zeichen ab Positionen 1, 4, 7, 10 usw. Im ersten Edit darf keine Maximallänge angegeben sein, sonst wird es beim Einfügen (Paste) abgeschnitten. Im Edit.OnChange auf Änderungen mit Länge>2 reagieren, den Text auslesen und dann aufteilen und auf die Edits verteilen. Und dann gibt es auch Funktionen ala Split bzw. SplitString. |
AW: Text/Zahlen auf mehrere Editfelder aufteilen
Gegenfrage, Wofür soll das gut sein?
Ob Du Aus Deiner Quelle das Hex-Pärchen kopierst oder aus einem Edit-Feld, bleibt sich ziemlich gleich. Ich vermute Du hast noch etwas mehr mit den Daten vor? Gruß K-H |
AW: Text/Zahlen auf mehrere Editfelder aufteilen
ja also der Rest ist schon fertig, es fehlt jetzt nur noch das einfügen der ganzen zeile, bisher musste ich jeden 2er block einzeln eintragen.
Also der Hintergrund des Programms ist so, jede HEX zeile bezieht sich auf einen Lampenfaden in einem Signal, jeder 2er Block der Zeile steht für eine bestimmte Eigenschaft und diese will ich auslesen, z.B. steht der erste block für die Elementnummer, der 2. für die Anschlussnummer der 3. für den Anschlusszusand usw. und je nach Wert des Blocks liegt ein anderer Zusatand vor und es geht darum schnell zu sehen dass ein Wert von der Norm abweicht und welcher um den Grund der Störung zu kristallisieren. |
AW: Text/Zahlen auf mehrere Editfelder aufteilen
Ok habs mit Copy hinbekommen, danke für die Hilfe
|
AW: Text/Zahlen auf mehrere Editfelder aufteilen
Ein String ist ein String ist ein String...
Der wird einfach gesplittet mit einem Delimiter:
Delphi-Quellcode:
oder:
procedure Split(Delimiter: Char; Str: string; ListOfStrings: TStrings) ;
begin ListOfStrings.Clear; ListOfStrings.Delimiter := Delimiter; ListOfStrings.StrictDelimiter := True; // kann entfallen, wenn unbekannt ListOfStrings.DelimitedText := Str; end; procedure TForm1.Button1Click(Sender: TObject); var OutPutList: TStringList; begin Edit7.text:= '01 00 02 05 FF 04 09'; OutPutList := TStringList.Create; try Split(' ', Edit7.text, OutPutList) ; Edit0.text:= OutPutList[0]; Edit1.text:= OutPutList[1]; Edit2.text:= OutPutList[2]; Edit3.text:= OutPutList[3]; Edit4.text:= OutPutList[4]; Edit5.text:= OutPutList[5]; Edit6.text:= OutPutList[6]; finally OutPutList.Free; end; end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var List: TStrings; begin Edit7.text:= '01 00 02 05 FF 04 09'; List := TStringList.Create; try // ExtractStrings([' '], [], PChar('01 00 02 05 FF 04 09'), List); ExtractStrings([' '], [], PChar(Edit7.text), List); Edit0.text:= List[0]; Edit1.text:= List[1]; Edit2.text:= List[2]; Edit3.text:= List[3]; Edit4.text:= List[4]; Edit5.text:= List[5]; Edit6.text:= List[6]; finally List.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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