AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variable aufspallten

Ein Thema von TDR · begonnen am 2. Mär 2011 · letzter Beitrag vom 6. Mär 2011
Antwort Antwort
TDR
(Gast)

n/a Beiträge
 
#1

Variable aufspallten

  Alt 2. Mär 2011, 13:57
Hallo liebe Delphiuser,

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

Vielen Dank im Voraus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Variable aufspallten

  Alt 2. Mär 2011, 13:58
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 2. Mär 2011 um 14:07 Uhr)
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#3

AW: Variable aufspallten

  Alt 2. Mär 2011, 14:39
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!
  Mit Zitat antworten Zitat
TDR
(Gast)

n/a Beiträge
 
#4

AW: Variable aufspallten

  Alt 2. Mär 2011, 20:21
Vielen Vielen Dank
Hat super geklappt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Variable aufspallten

  Alt 2. Mär 2011, 20:29
ExplodeExplode und die TStringList kann sowas auch aufsplitten (Delphi-Referenz durchsuchenTStrings.Delimiter).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Variable aufspallten

  Alt 2. Mär 2011, 20:34
Wenn du selbst die Variable erstellst, warum nimmst du dann nicht gleich ein Array oder ähnliches?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#7

AW: Variable aufspallten

  Alt 2. Mär 2011, 21:13
TDR du musst aber selbstständig nachvollziehen was da passiert
  Mit Zitat antworten Zitat
TDR
(Gast)

n/a Beiträge
 
#8

AW: Variable aufspallten

  Alt 4. Mär 2011, 20:49
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
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Variable aufspallten

  Alt 5. Mär 2011, 12:06
[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;

Geändert von Bjoerk ( 5. Mär 2011 um 12:31 Uhr) Grund: edit: Procedure statt Function
  Mit Zitat antworten Zitat
TDR
(Gast)

n/a Beiträge
 
#10

AW: Variable aufspallten

  Alt 6. Mär 2011, 16:33
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)

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
  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 16:51 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