Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Umrechnen von String-Werten zu dezimal Code und zurück (https://www.delphipraxis.net/70060-umrechnen-von-string-werten-zu-dezimal-code-und-zurueck.html)

Stresemann 24. Mai 2006 13:09


Umrechnen von String-Werten zu dezimal Code und zurück
 
Hallo zusammen! Wie schon in einem anderen Tread brauche ich die Hilfe bei einem Programm
womit ich string-Werte, wie z.B. A zu dezimal-code laut Ascii bekommen, also bei A 65...
Bei dem Umrechnen von string nach dezimalcode habe ich schon ein Erfolg erzielt:

Delphi-Quellcode:

var i,n: integer;
Satz, int: String;

for i := 1 to (length(Satz)) do
begin
n := Ord(Satz[i]);
Mit diesem Quellcode klappt die Umrechnung! Hurrah und danke noch mal nachträglich
für die Hilfe dabei.. Nur jetzt fehlt mir noch die umgekehrte Rechnung von
dezimal zu String..
Einen Ansatz dazu habe ich:

Delphi-Quellcode:
var i,n: integer;
Satz, int: String;

for i := 1 to length(satz) do
begin
int := chr(strtoint(satz[i]));
Doch dies klappt noch net, da er bei jedem Wert nur  herausspuckt.
Ich bin mir sicher das die Schleife hochgradig falsch ist, jedoch weiß ich mir
selber noch nicht richtig zu helfen. :gruebel:

ichbins 24. Mai 2006 13:12

Re: Umrechnen von String-Werten zu dezimal Code und zurück
 
Zu was brauchst du eine Schleife?

Delphi-Quellcode:
str:=char(strtoint(int));

Klaus01 24. Mai 2006 13:15

Re: Umrechnen von String-Werten zu dezimal Code und zurück
 
Delphi-Quellcode:
var i,n: integer;
Satz, int: String;

for i := 1 to length(satz) do
  begin
   int := int + chr(strtoint(satz[i]));
  end;
weil int ein String und kein Char ist
und weil Zeichen von chr(0)- char(9) in der Regel nicht darstellbar sind.

Grüße
Klaus

_frank_ 24. Mai 2006 13:18

Re: Umrechnen von String-Werten zu dezimal Code und zurück
 
naja, wie speicherst du die dezimalzahlen? sicherlich als string hintereinander. du brauchst da ein trennzeichen (leerzeichen, #, oder was anderes) um zu kennzeichnen, wann ein neuer Wert anfängt.
Dann zerlegst du anhand des trennzeichens den string und wandelst um.

ungetested und ohne fehlerprüfung (n>255):

Delphi-Quellcode:
satz2:='';
p:=pos(' ',satz);
while p>0 do
begin
  n:=StrtoInt(copy(satz,1,n-1));
  satz2:=satz2+chr(n);
  delete(satz,1,n);
end;
Gruß Frank

marabu 24. Mai 2006 13:19

Re: Umrechnen von String-Werten zu dezimal Code und zurück
 
Hier ein Stück Code zum Studieren:

Delphi-Quellcode:
procedure Test;
var
  s: String;
  ba: array of Byte;
  i: Integer;
begin
  s := 'Stresemann';
  SetLength(ba, Length(s));
  for i := 1 to Length(s) do
    ba[Pred(i)] := Ord(s[i]);
  s := 'wundersam'; // nur zur Verwirrung
  SetLength(s, Length(ba));
  for i := 1 to Length(s) do
    s[i] := Chr(ba[Pred(i)]);
  ShowMessage(s); // was wird angezeigt?
end;
Grüße vom marabu

DP-Maintenance 24. Mai 2006 13:19

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Freeware" nach "Object-Pascal / Delphi-Language" verschoben.
Ist ja kein Programm das vorgestelt wird.

Stresemann 24. Mai 2006 15:16

Re: Umrechnen von String-Werten zu dezimal Code und zurück
 
Danke für die Tipps! Letzendlich ist es darauf hinausgelaufen:

Delphi-Quellcode:
int :=chr(strtoint(satz));
Jedoch kann ich damit nur einen Buchstaben umrechnen. Ich würde aber gerne ganze Sätzte um rechnen
können. Hätte jemand eine Idee für die Schleife?!

DGL-luke 24. Mai 2006 15:20

Re: Umrechnen von String-Werten zu dezimal Code und zurück
 
Delphi-Quellcode:
function StringToCharCodes(s: string): string;
begin
  Result := '';
  for i := 1 to length(s) do
    Result := Result + '#' + inttostr(ord(s[i]));
end;
Sollte so gehen. "ABC" -> "#65#66#67".

Wenn du statt dem Gatter als trennzeichen mit leerzeichen oder nullen auffüllen willst, solltest du dir evtl. mal Delphi-Referenz durchsuchenFormat ansehen.

Stresemann 24. Mai 2006 15:24

Re: Umrechnen von String-Werten zu dezimal Code und zurück
 
Das ist aber leider bei meinem Programm nicht möglich..
Der Dezimalcode darf keine Trennzeichen haben.. Gibt es nicht auch noch eine andere Möglichkeit?

_frank_ 24. Mai 2006 15:36

Re: Umrechnen von String-Werten zu dezimal Code und zurück
 
eine idee hab ich noch...mach den dezimalcode immer 3-stellig wenn du den string erweiterst
z.b. so:

Delphi-Quellcode:
function StringToCharCodes(s: string): string;
var i:integer;
begin
  Result := '';
  for i := 1 to length(s) do
    Result := Result + format('%.3d',[ord(s[i])]);
end;

function CharCodesToString(s: string): string;
var i,c:integer;
begin
  Result := '';
  c:=length(s) div 3;
  for i := 0 to c-1 do
    Result := Result + chr(strToInt(copy(s,i*3+1,3)));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  edit2.text:=StringToCharCodes(edit1.text);
  edit3.text:=CharCodesToString(edit2.text);
end;

Gruß Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
Seite 1 von 2  1 2      

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