Einzelnen Beitrag anzeigen

Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#3

Re: 2 Zeichenketten zusammenführen

  Alt 29. Nov 2006, 18: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
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat