![]() |
Buchstaben ersetzen
hi,
habe vor 3 jahren das letzte mal programmiert und das nur in TP (turbo pascal) und bitte um hilfe. ich möchte ein programm bauen wo ich oben einen text eingebe und unten der text "übersetzt" wird. mit der oberfläche komme ich klar nur nicht mehr mit der syntax(befehle)... z.b buchstaben in zahlen ersetzen wo die buchstaben im ABC abgezählt sind... A B C D E F G H I J K L M N O P Q R S T U V W X Y Z leertaste a b c d e f g h i j k l m n o p q r s t u v w x y z leertaste 1 2 3 4 5 6 7 8 9 01 02 03 04 05 06 07 08 09 001 002 003 004 005 006 007 008 009 halt bis 9 und dann eine 0 davor h a l l o t e s t 8 1 03 03 06 009 002 5 001 002 text: Hallo Test button klick ^^ und ausgabe: 810303060090025001002 groß und kleinschreibung soll dabei keine rolle spielen. man könnte sagen ich bin wieder fast am anfang zu lernen... ich hoffe ihr könnt mir helfen und ein paar tipps geben. MfG@all |
Re: Buchstaben ersetzen
Hallo,
ich werfe einfach mal ein paar Funktionen in den Raum, die dir helfen werden: ![]() ![]() ![]() und ![]() [Edit]Für jedes Zeichen machst du das natürlich mit einer Schleife. Mh, ob for in do für Strings geht :gruebel: |
Re: Buchstaben ersetzen
Also strings ersetzen geht mit der Funktion
Delphi-Quellcode:
in diesem Falle werden alle "A" im String zu einer "1".
StringReplace(str,'A','1',[rfReplaceAll]);
|
Re: Buchstaben ersetzen
Was du meinst ist der ASCII Code, das ist eine Zeichentabelle in dem alle standartzeichen sind, sollten 256 sein..
wenn du nur bestimmte zeichen, meinetwegen a-z und 0-1 ändern willst, kannst du es manuell ändern... du mußt das ganze dann in einem array of integer, oder mit trennzeichen machen. Die Arraymethode währe vorzuziehen.
Delphi-Quellcode:
Diese Procedure soll ein kleiner anreiz sein....
Procedure CalcString(s:STring);
var a:Array Of Integer; i :Integer; b:String; begin setlengh(a,Length(s)) for i:=0 to Length(S)-1 do begin a[i]:=Ord(Lowercase(s[i])); end; for i:=0 to length(a)-1 do begin b:=b+'|'+IntToStr(a[i]) end; showmessage(b); So wie sie hier ist, ist sie eigenldich recht unsinnig, MfG Real Thunder Edit: Code ist ungetestet |
Re: Buchstaben ersetzen
danke erstmal an alle die was geschrieben haben... ich werde mir das mal genau anschauen.
@flash11 wie ist es mit kleine buchstaben müsste man die extra schreiben oder ist groß und kleinschreibung egal? und noch irgend wann mit einem tziel das es das auch rückwärts kann die zahlen wieder in buchstaben ?!?! |
Re: Buchstaben ersetzen
Zitat:
Delphi-Quellcode:
StringReplace(str,'A','1',[rfReplaceAll]); //CaseSensitive
Delphi-Quellcode:
StringReplace(str,'A','1',[rfReplaceAll, rfIgnoreCase]); //CaseInSensitive
|
Re: Buchstaben ersetzen
Moin!
Soweit ich das verstanden habe, ist ein 26-faches StringReplace hier wohl die ungeeignetste Methode um an das Problem heranzugehen. Wie bereits oben erwähnt, würde man einen Haufen (!) redundanten Code sparen, wenn man das ganze per Schleife und Ord realisiert. Gruß, Max |
Re: Buchstaben ersetzen
thx
ich möchte halt nur nicht mit "ord" arbeiten |
Re: Buchstaben ersetzen
Zitat:
|
Re: Buchstaben ersetzen
Herzlich willkommen in der Delphi-PRAXiS, U17R4.
Als Wiedereinstiegshilfe:
Delphi-Quellcode:
Seit TP hat sich einiges geändert. Es wird das Beste sein, wenn du jede Zeile anhand der Delphi Onlinehilfe analysierst. Bei Verständnisproblemen erhältst du hier im Forum sicher Hilfe.
resourcestring
S_INVCHAR = 'EncodedStr(): ungültiges Eingabezeichen'; function EncodedStr(s: string): string; const LETTERS = 'abcdefghijklmnopqrstuvwxyz '; DIGITS = '123456789'; var i, iNext, iPad, index: Integer; sCode: string[4]; begin iNext := 1; SetLength(Result, Length(s) shl 2); for i := 1 to Length(s) do begin index := Pos(Lowercase(s[i]), LETTERS); if index = 0 then raise Exception.Create(S_INVCHAR); iPad := Pred(index) div 9; index := Succ(Pred(index) mod 9); sCode := StringOfChar('0', iPad) + DIGITS[index] + ' '; Move(sCode[1], Result[iNext], Length(sCode)); Inc(iNext, Length(sCode)); end; SetLength(Result, Pred(iNext)); end; procedure TDemoForm.TestButtonClick(Sender: TObject); begin ShowMessage(EncodedStr('Hallo Test')); end; Freundliche Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz