Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Buchstaben zu Zeichen (https://www.delphipraxis.net/50020-buchstaben-zu-zeichen.html)

Blumi 19. Jul 2005 19:11


Buchstaben zu Zeichen
 
Hi

Ich möchte gerne Buchstaben aus einem String in Zeichen umsetzen.

Hab das mal so versucht:

Delphi-Quellcode:
  Edit2.Text:=StringReplace(Edit1.Text,'A','5',[rfReplaceAll, rfIgnoreCase]);
  Edit2.Text:=StringReplace(Edit1.Text,'1','V',[rfReplaceAll, rfIgnoreCase]);
  Edit2.Text:=StringReplace(Edit1.Text,'2','$',[rfReplaceAll, rfIgnoreCase]);
...
Aber das funtioniert nur, wenn es nur eine Zeile hat, also:

Delphi-Quellcode:
  Edit2.Text:=StringReplace(Edit1.Text,'A','5',[rfReplaceAll, rfIgnoreCase]);
Wie bring ich es fertig, damit sich alle gewünschten Zeichen ersetzen lassen?


Gruss Blumi

marabu 19. Jul 2005 19:21

Re: Buchstaben zu Zeichen
 
Sali Blumi,

vielleicht hilft dir das?

Delphi-Quellcode:
function Translate(s: string; sFrom, sTo: string): string;
var
  i, j: integer;
begin
  Result := s;
  i := 1;
  while i <= Length(s) do begin
    j := Pos(s[i], sFrom);
    if j > 0 then
      if j > Length(sTo) then Delete(s, i, 1)
      else begin
        Result[i] := sTo[j];
        Inc(i);
      end
    else Inc(i);
  end;
end;

begin
  Edit2.Text := Translate(Edit2.Text, 'A12', '5V$');
end;
Grüße vom marabu

dahead 19. Jul 2005 19:22

Re: Buchstaben zu Zeichen
 
Hallo,

ich weiß zwar nicht von welchen Zeilen du redest, aber eine Schleife könnte doch helfen?

for I := 1 to Length(String) do
StringReplace(SourceString, ...);

du kannst aber auch mit Pos, bzw. PosEx arbeiten. Dabei dürfte die Thread-Suche viele Ergebnisse liefern.

Außerdem kannst du mit Ord und Chr arbeiten (Delphi-Hilfe) (so kannst du bspw. prüfen ob es eine Zahl oder ein String ist).

Blumi 19. Jul 2005 19:25

Re: Buchstaben zu Zeichen
 
Hi danke, so funktionierts :)

jensw_2000 19. Jul 2005 19:32

Re: Buchstaben zu Zeichen
 
Hi,

das liegt daran, das du Edit2.text immer wieder mit edit1.text überschreibst, edit1.text sich aber nicht ändert.

Das wäre eventuell auch noch eine Alternative:

Delphi-Quellcode:
...
...
Private
   function ReplaceString(S:String):String;
...
...
...

function TForm1.ReplaceString(S:String):String;
begin
  S:=StringReplace(S,'A','5',[rfReplaceAll, rfIgnoreCase]);
  S:=StringReplace(S,'1','V',[rfReplaceAll, rfIgnoreCase]);
  S:=StringReplace(S,'2','$',[rfReplaceAll, rfIgnoreCase]);
  Result:=s:
end;

// Aufruf:

Procedure TForm1.Button1Click(Sender:TObject);
begin
  Edit2.text:=ReplaceString(Edit1.text);
end;


// Edit: hatte versehentlich procedure anstatt function geschrieben, dummer Fehler wenn man gleich im Forum und nicht in der IDE tippt ...

Delphi-Freak 19. Jul 2005 20:24

Re: Buchstaben zu Zeichen
 
Achso, jetzt weiß ich, was du mit Zeilen meinst - im Quellcode, nicht im Edit
also so gings dann auch:
Code:
Edit2.Text:=StringReplace(Edit1.Text,'A','5',[rfReplaceAll, rfIgnoreCase]);
Edit2.Text:=StringReplace(Edit[u][b]2[/b][/u].Text,'1','V',[rfReplaceAll, rfIgnoreCase]);
Edit2.Text:=StringReplace(Edit[u][b]2[/b][/u].Text,'2','$',[rfReplaceAll, rfIgnoreCase]);
//...
LG, Gerhard

Edit: im Code-Tag funktionieren die Formatierungen nicht :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 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