Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Umwandlung String in Zahl (https://www.delphipraxis.net/59099-umwandlung-string-zahl.html)

huefte 17. Dez 2005 12:25


Umwandlung String in Zahl
 
Hallo

Ich hab ne Frage. Wollte wissen, ob es ne einfach Möglichkeit gibt, Buchstaben in Zahlen umzuwandeln?
Und zwar will ich, dass BEISPIELSWEISE das Wort "Hallo" in "45661" umgewandelt wird! Gibt es dazu ne einfache Möglichkeit?

Liebe Grüße
Pascal

Matze 17. Dez 2005 12:26

Re: Umwandlung String in Zahl
 
Hi, nach welchem Schema soll die Zahl denn Aufgebaut werden?

MisterNiceGuy 17. Dez 2005 12:29

Re: Umwandlung String in Zahl
 
Wäre "Hallo" 81121216 wäre das bestimmt einfacher zu machen :)

huefte 17. Dez 2005 12:33

Re: Umwandlung String in Zahl
 
Also eigentlich will ich, dass jeder Buchstaben des Alphabets durch zwei Zaheln ersetzt wird. Mit einstelligen Zahlen geht das schlecht, weil es ja insgesamt 26 Buchstaben gibt.
Ich will sozusagen ein Wort in Zahlen verschlüsseln. Im Programm, das ich geschrieben habe, werden nur die Buchstaben verschobn. Jetzt wärs halt noch gut, wenn die Buchstaben in Zahlen umgewandelt werden.

Also
"W" --> 76
"E" --> 33
"I" --> 34
"H" --> 13
"N" --> 29
"A" --> 89
"C" --> 76
"H" --> 13
"T" --> 46
"E" --> 33
"N" --> 29

Das Wort "WEIHNACHTEN" würde - rein zahlenmäßig - verschlüsselt also so aussehen:

7633341329897613463329

kill -9 17. Dez 2005 12:46

Re: Umwandlung String in Zahl
 
Hi!
Also, eine einfache Funktion um Zeichen eines Strings zu codieren gibt es meines Wissens nach nicht. :( Viel eher musst du mit einer Schleife manuell die einzelnen Buchstaben konvertieren.

Matze 17. Dez 2005 12:49

Re: Umwandlung String in Zahl
 
Ich würde es so ähnlich lösen, ist jedoch nicht sonderlich performant):

Delphi-Quellcode:
var
  Form1: TForm1;
  myArray: array[1..26] of integer = (23, 54, 64, 12, 57, 78, 23, 21, 76, 68 ...;

implementation

{$R *.dfm}

function MakeChaos(Input: string): string;
var
  i: integer;
  Return: string;
begin
  Return := '';
  for i := 1 to Length(Input) do
  begin
    Return := Return + IntToStr(myArray[Ord(Input[i]) - 32 - 64]);
  end;
  Result := Return;
end;
;

Phistev 17. Dez 2005 13:12

Re: Umwandlung String in Zahl
 
Statt array[1..26] würde ich array['a'..'z'] verwenden, dass macht das ord überflüssig

Matze 17. Dez 2005 13:15

Re: Umwandlung String in Zahl
 
Nur möchte er ja nicht

1 = A
2 = B :gruebel:

huefte 17. Dez 2005 13:17

Re: Umwandlung String in Zahl
 
Also das ist doch schon mal was. Kann jetzt ja mal rumbasteln! Wenn ich - bestimmt wieder - probleme habe, meld ich mich wieder.
Trotzdem danke im vorraus :-)

huefte 17. Dez 2005 13:34

Re: Umwandlung String in Zahl
 
Also das klappt alles wunderbar!
Jetzt hab ich aber noch was. Wie würde denn dann die Umkehrfunktion aussehen? Die brauch ich ja, ums wieder zu entschlüsseln!

EDIT:
Was passiert wenn ich "hallo du" eingeben?
Also ich meine, das Leerzeichen wird zu "0", aber wie bekomm ich leerzeichen zb. als "99" ausgegeben?

Matze 17. Dez 2005 13:49

Re: Umwandlung String in Zahl
 
Ord() -> Chr()

tigerman33 17. Dez 2005 14:03

Re: Umwandlung String in Zahl
 
Zitat:

Zitat von Phistev
Statt array[1..26] würde ich array['a'..'z'] verwenden, dass macht das ord überflüssig

Zitat:

Zitat von Matze
Nur möchte er ja nicht

1 = A
2 = B :gruebel:

So meinte er das denke ich auch nicht, aber aus
Delphi-Quellcode:
Return := Return + IntToStr(myArray[Ord(Input[i]) - 32 - 64]);
würde dann das schönere
Delphi-Quellcode:
Return := Return + IntToStr(myArray[Input[i]]);
// edit:
Vorher müsste man natürlich noch in Kleinbuchstaben umwandeln, ich glaube die Funktion heißt LowerCase, aber bin mir da jetzt nicht ganz sicher.

huefte 17. Dez 2005 15:07

Re: Umwandlung String in Zahl
 
Das bin ich wieder!
Wär ja mal schön, wenn ich auch mal was alleine könnte :-(
Ich bekomm das Umkehren nicht hin :-(

huefte 18. Dez 2005 13:53

Re: Umwandlung String in Zahl
 
Hallo

Also ich hab jetzt die ganze zeit versucht was zu basteln, aber ich bekomm die Umkehrfuntion nicht hin! :-( kann mir bitte jemand helfen???????????

Phistev 18. Dez 2005 14:00

Re: Umwandlung String in Zahl
 
Prinzip:
Setlength(Result, length(eingang) shr 1);
while Length(eingang) > 0 do begin
Vergleiche die ersten beiden Zeichen mit deiner Tabelle
Füge das passende Zeichen in den Ergebnis-String ein
Lösche die beiden ersten Zeichen
end;

huefte 18. Dez 2005 15:28

Re: Umwandlung String in Zahl
 
Gott sei Dank! Ich hab jetzt endlich einen Weg gefunden!
Leider ist da noch 1(!) kleines Problem:

Ich hab ne Schleife die so aussieht

Delphi-Quellcode:
for i:= 1 to length(z) do
Die Schleife soll nun aber nicht bis length(z) laufen, sondern bis zur Hälfte von length(z), also:

Delphi-Quellcode:
for i:= 1 to length(z)/2 do
Leide rgeht das so nicht! Kann mir jemand helfen?

dahead 18. Dez 2005 15:34

Re: Umwandlung String in Zahl
 
warum nur bis zur hälfte?

du könntest ein "div" statt dem "/" verwenden.

kleiner Unwissender 18. Dez 2005 19:46

Re: Umwandlung String in Zahl
 
oder vielleicht ein round(length(z)/2)?

huefte 19. Dez 2005 12:51

Re: Umwandlung String in Zahl
 
Naja, ich habs nun auch so gelöst und so lang es läuft, solls eigentlich egal sein!
Also nochmals danke, das Problem wurde gelöst!

Gruß huefte


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