Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Variable aufspallten (https://www.delphipraxis.net/158775-variable-aufspallten.html)

TDR 2. Mär 2011 13:57

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:

DeddyH 2. Mär 2011 13:58

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]

-187- 2. Mär 2011 14:39

AW: Variable aufspallten
 
Delphi-Quellcode:
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;
Viel Spass!

TDR 2. Mär 2011 20:21

AW: Variable aufspallten
 
Vielen Vielen Dank
Hat super geklappt :thumb: :thumb::party: :dancer:

himitsu 2. Mär 2011 20:29

AW: Variable aufspallten
 
ExplodeExplode und die TStringList kann sowas auch aufsplitten (Delphi-Referenz durchsuchenTStrings.Delimiter).

Luckie 2. Mär 2011 20:34

AW: Variable aufspallten
 
Wenn du selbst die Variable erstellst, warum nimmst du dann nicht gleich ein Array oder ähnliches?

-187- 2. Mär 2011 21:13

AW: Variable aufspallten
 
TDR du musst aber selbstständig nachvollziehen was da passiert :)

TDR 4. Mär 2011 20:49

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:

Bjoerk 5. Mär 2011 12:06

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;

TDR 6. Mär 2011 16:33

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:

$127.0.0.1
Delphi-Quellcode:
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;
Input = SMessage


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