Autor Beitrag
tim1990
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 17.08.10 09:28 
Hallo,

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

Bsp:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 32

Win 7
Delphi 7 Pers., C# (VS 2010 Express)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 71
Erhaltene Danke: 4

Vista, Win XP, Win 89
Turbo Delphi Ex.
BeitragVerfasst: Di 17.08.10 12:54 
Hab die Funktion gerade mal getestet und eine kleine korrektur gemacht:

ausblenden 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.

_________________
Tropby
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 17.08.10 13:02 
Richtig, nach dem letzten Element sollte aber auch kein Komma sein:

ausblenden 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):

ausblenden Delphi-Quelltext
1:
2:
3:
4:
    Result := Result + arr[i];
    if i <> High(arr) then
      Result := Result + ', ';
  end
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: 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):

ausblenden 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
ausblenden 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
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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^^

www.swissdelphicente...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.