AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Text/Zahlen auf mehrere Editfelder aufteilen
Thema durchsuchen
Ansicht
Themen-Optionen

Text/Zahlen auf mehrere Editfelder aufteilen

Ein Thema von Apocalypse89 · begonnen am 4. Feb 2017 · letzter Beitrag vom 5. Feb 2017
Antwort Antwort
Apocalypse89

Registriert seit: 4. Feb 2017
4 Beiträge
 
#1

Text/Zahlen auf mehrere Editfelder aufteilen

  Alt 4. Feb 2017, 22:05
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).

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?
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#2

AW: Text/Zahlen auf mehrere Editfelder aufteilen

  Alt 4. Feb 2017, 22:18
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?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Apocalypse89

Registriert seit: 4. Feb 2017
4 Beiträge
 
#3

AW: Text/Zahlen auf mehrere Editfelder aufteilen

  Alt 4. Feb 2017, 22:26
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Text/Zahlen auf mehrere Editfelder aufteilen

  Alt 4. Feb 2017, 22:40
Delphi-Referenz durchsuchenSystem.Copy
Delphi-Referenz durchsuchenSystem.Delete
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Feb 2017 um 22:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Text/Zahlen auf mehrere Editfelder aufteilen

  Alt 4. Feb 2017, 22:43
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Apocalypse89

Registriert seit: 4. Feb 2017
4 Beiträge
 
#6

AW: Text/Zahlen auf mehrere Editfelder aufteilen

  Alt 4. Feb 2017, 22:52
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.
  Mit Zitat antworten Zitat
Apocalypse89

Registriert seit: 4. Feb 2017
4 Beiträge
 
#7

AW: Text/Zahlen auf mehrere Editfelder aufteilen

  Alt 5. Feb 2017, 00:31
Ok habs mit Copy hinbekommen, danke für die Hilfe

Geändert von Apocalypse89 ( 5. Feb 2017 um 01:30 Uhr)
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#8

AW: Text/Zahlen auf mehrere Editfelder aufteilen

  Alt 5. Feb 2017, 05:21
Ein String ist ein String ist ein String...

Der wird einfach gesplittet mit einem Delimiter:
Delphi-Quellcode:
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;
oder:
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;

Geändert von t.roller ( 5. Feb 2017 um 05:57 Uhr)
  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 15:47 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