Variable aufspallten
Hallo liebe Delphiuser, :hi:
Ich habe folgendes Problem. In verschiedenen Programmen von mir habe ich eine Variable die folgendermaßen aussieht: §1.Variable;§2.Variable;§3.Variable; usw. Hab ihr eine Idee wie ich diese variablen jetzt aufspalten kann, dass sie danach z.B. einzeln in einer Listbox stehen:?: Ich hoffe ihr könnt mir helfen :coder: Vielen Dank im Voraus :cheers: |
AW: Variable aufspallten
Mit PosEx nach dem nächsten "§" suchen und ab da bis zum nächsten ";" kopieren.
[edit] Alternativ kannst Du aber auch mit einer TStringlist arbeiten, indem Du deren Delimiter auf "§" oder ";" setzt, je nachdem, was herauskommen soll. [/edit] |
AW: Variable aufspallten
Delphi-Quellcode:
Viel Spass!
procedure TForm1.Button1Click(Sender: TObject);
var Pos1: Integer; Input,Temp: String; begin Input:=Edit1.Text; repeat Pos1:=Pos(';',Input); Temp:=Copy(Input,0,Pos1-1); ListBox1.Items.Add(Temp); Input:=Copy(Input,Pos1+1,Length(Input)); until Pos1=0; end; |
AW: Variable aufspallten
Vielen Vielen Dank
Hat super geklappt :thumb: :thumb::party: :dancer: |
AW: Variable aufspallten
Explode und die TStringList kann sowas auch aufsplitten (TStrings.Delimiter).
|
AW: Variable aufspallten
Wenn du selbst die Variable erstellst, warum nimmst du dann nicht gleich ein Array oder ähnliches?
|
AW: Variable aufspallten
TDR du musst aber selbstständig nachvollziehen was da passiert :)
|
AW: Variable aufspallten
ich habe verstanden habe es auch angepasst für mich
z. B. aber ich das ganze nicht mit kopieren gelöst sondern löschen. Und bitte kleine Programmbeispiele geben :( :wink: :cry: |
AW: Variable aufspallten
[Klugscheiß]
Zu Lernzwecken kann man es ausnahmsweise ja mal ganz genau nehmen. Die Procedure von -187- könnte man etwas abändern, da dort ein leerer Eintrag in die Liste am Schluß aufgenommen wird. Deshalb wäre hier eine while Schleife (Prüfung am Anfang) geeigneter als eine repeat Schleife (Prüfung am Ende). [/Klugscheiß]
Delphi-Quellcode:
var
Pos1: Integer; Input,Temp: String; begin Input:=Edit1.Text; if Input<>'' then // Input[0] würde zu einem Fehler führen, siehe unten begin Pos1:=Length(Input); if Input[Pos1]<>';' then Input:=Input+';'; // am Schluß ist ein ; erforderlich while Pos(';',Input)>0 do // enthält input ein ; begin Pos1:=Pos(';',Input); // wo ? Temp:=Copy(Input,1,Pos1-1); // strings beginnen in Delphi mit 1 ListBox1.Items.Add(Temp); Delete(Input,1,Pos1); // du bevorzugst delete //oder Input:=Copy(Input,Pos1+1,Length(Input)-Pos1); end; end; end; |
AW: Variable aufspallten
:-D Vielen Dank
der 2. Code ist mir auch ein bisschen lieber. Musste ihn aber etwas ab ändern weil sonst das in der Listbox stande (war auch beim 1.code so):pale: Zitat:
Delphi-Quellcode:
Input = SMessage
if SMessage<>'' then
begin Pos1:=Length(SMessage); if SMessage[Pos1]<>';' then SMessage:=SMessage+';'; while Pos(';',SMessage)>0 do begin Pos1:=Pos(';',SMessage); Temp:=Copy(SMessage,2,Pos1-2); ListBox1.Items.Add(Temp); Delete(SMessage,1,Pos1); end; Aber trotzdem VIELEN VIELEN DANK :thumb: :idea: 8-) :dance: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 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