Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - StringArray to String


tim1990 - Di 17.08.10 09:28
Titel: StringArray to String
Hallo,

gibt es eine Delphi-funktion, die aus einem String-Array einen (Kommagetrennten) String generiert:

Bsp:

Delphi-Quelltext
1:
2:
3:
myString[0]:= 'erster';
myString[1]:= 'zweiter';
myString[2]:= 'dritter';

-->'erster, zweiter, dritter'

danke

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Stundenplan - Di 17.08.10 09:40

Verwende doch anstatt dem Array TStringList, das hat nämlich auch die Eigenschaft CommaText. :idea:
Ansonsten kannste dir ja schnell mal eine selber schreiben.


Boldar - Di 17.08.10 09:40

Etwas mehr informationen wären nicht schlecht.
Wofür brauchst du das denn?
Evtl. könnte man eine Stringlist nehmen.

Edith sagt: FUUU, zu langsam...


tim1990 - Di 17.08.10 10:20

hallo,

ich habe ein stringarray und ich will die einzelnen Elemente hintereinander konkaniert haben (durch ein Kommo/Semikolon);

Gibt es eine DelphiFunktion, bspw arrayToString , oder so?


Andreas L. - Di 17.08.10 10:31

user profile icontim1990 hat folgendes geschrieben Zum zitierten Posting springen:


Gibt es eine DelphiFunktion, bspw arrayToString , oder so?


Nein, aber das kann man sich selber schreiben:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function ArrayToStr(const arr: array of string):String;
var
  i: Integer;
begin
  Result := '';
  for i := Low(arr) to High(arr) do
  begin
    if i <> High(arr) then
      Result := Result + ', ';
    Result := Result + arr[i];
  end
end;

Ungetestet...


Tropby - Di 17.08.10 12:54

Hab die Funktion gerade mal getestet und eine kleine korrektur gemacht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function ArrayToStr(const arr: array of string):String;
var
  i: Integer;
begin
  Result := '';
  for i := Low(arr) to High(arr) do
  begin
    if i <> Low(arr) then
      Result := Result + ', ';
    Result := Result + arr[i];
  end
end;


Es darf ja beim ersten Element kein ", " davor sein.


Andreas L. - Di 17.08.10 13:02

Richtig, nach dem letzten Element sollte aber auch kein Komma sein:


Delphi-Quelltext
1:
if (i <> Low(arr)) and (i <> High(arr)) then                    


EDIT: Oder man platziert den Code Result := Result + arr[i]; über die Abfrage, dann reicht die Überprüfung auf High(arr):


Delphi-Quelltext
1:
2:
3:
4:
    Result := Result + arr[i];
    if i <> High(arr) then
      Result := Result + ', ';
  end


Marc. - Di 17.08.10 15:29

user profile iconAndreas L. hat folgendes geschrieben Zum zitierten Posting springen:
EDIT: Oder man platziert den Code Result := Result + arr[i]; über die Abfrage, dann reicht die Überprüfung auf High(arr):


Delphi-Quelltext
1:
2:
3:
4:
    Result := Result + arr[i];
    if i <> High(arr) then
      Result := Result + ', ';
  end

Oder man platziert den Code unter die Schleife und spart sich dann komplett das if. Ob das wesentlich eleganter ist, ist nun dem geneigten Programmierer überlassen. :P

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function ArrayToStr(const AList: Array of Stringconst ADelimiter: String): String;
var
  i: Integer;
begin
  Result := '';

  for i := Low(AList) to High(AList) - 1 do
    Result := Result + AList[i] + ADelimiter;

  Result := Result + AList[High(AList)];
end;


Durek - So 22.08.10 04:19

Hey,
in PHP gibt es die Funktionen implode(',',arr) und explode()
Diese hier mal für Delphi
einfach mal:
arr[0]='Test';
arr[1]='Bla';
arr[2]='Blubb';
String := implode(',',arr)

String hat dann den Wert "Test,Bla,Blubb" der erste Parameter also gibt die Zeichenkette für den "Kleber" an^^

http://www.swissdelphicenter.ch/torry/showcode.php?id=1326

Ansonsten wäre JSON das was du meinst, ich arbeite erst einige Tage mit Delphi und versuche selbst noch die JSON Funktionen von der "superobject" Klasse irgendwie richtig anzuwenden, daher kann ich Dir da erstmal nicht behilflich sein.