Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
|
Re: 2 Zeichenketten zusammenführen
29. Nov 2006, 19:16
Hi,
ich habe hier mal ein Code gebastelt, der allerdings nur funktioniert, wenn die Zeichekette 2 so ist wie ist vorgestellt wurde, hoffe du kannst damit etwas anfangen:
Delphi-Quellcode:
private
// setzt nunächst ein Backslash für ein Komma in einem Text
function SetSeparatorInText(Zeichenkette: String): String;
// setzt am Ende der Prozedur nach dem Backslash ein Komma in einem Text
function SetCommaAfterSeparator(Zeichenkette: String): String;
// fügt die einzelnen Strings zusammen
function JoinStrings(Zeichenkette: String): String;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
.
.
.
function TForm1.SetSeparatorInText(Zeichenkette: String): String;
var
i: Integer;
InText: Boolean; // Booleanwert für Aussage ob in einem Text oder nicht
begin
Result := '';
InText := False;
for i := 1 to Length(Zeichenkette) do
begin
If (Zeichenkette[i] = '"') and (not InText) then InText := True
Else If (Zeichenkette[i] = '"') and (InText) then InText := False;
If InText then
begin
If Zeichenkette[i] = ',' then
begin
Delete(Zeichenkette, i, 1);
Insert('\', Zeichenkette, i);
end;
end;
end;
Result := Zeichenkette;
end;
function TForm1.SetCommaAfterSeparator(Zeichenkette: String): String;
var
i: Integer;
begin
Result := '';
for i := 1 to Length(Zeichenkette) do If Zeichenkette[i] = '\' then Insert(',', Zeichenkette, i + 1);
Result := Zeichenkette;
end;
// diese Funktion muss gegebenfalls angepasst werden
function TForm1.JoinStrings(Zeichenkette: String): String;
var
i: Integer;
j: Integer;
Teile: array[0..4] of String; //hier werden die Einzelteile gespeichert
begin
Result := '';
j := 0;
Repeat
Teile[j] := Copy(Zeichenkette, 1, Pos(',', Zeichenkette));
Delete(Zeichenkette, 1, Pos(',', Zeichenkette));
Inc(j);
Until Pos(',', Zeichenkette) = 0;
Teile[4] := Copy(Zeichenkette, 1, Length(Zeichenkette));
Zeichenkette := '';
for i := 1 to 5 do
begin
Zeichenkette := Zeichenkette + Label2.Caption[i] + ',' + Teile[i - 1];
end;
Result := Zeichenkette;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Tmp: String;
begin
Tmp := Label1.Caption;
Tmp := SetSeparatorInText(Tmp);
Tmp := JoinStrings(Tmp);
Label3.Caption := SetCommaAfterSeparator(Tmp);
// Kurzschreibeweise sieht wiefolgt aus
//Label3.Caption := SetCommaAfterSeparator(JoinStrings(SetSeparatorInText(Label1.Caption)));
end;
end.
Gruß
Mazel
|
|
Zitat
|