Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi asci in Integer!! (https://www.delphipraxis.net/99767-asci-integer.html)

Delphieinsteiger 17. Sep 2007 14:52


asci in Integer!!
 
Hallo

Bräuchte mal hilfe beim umwandeln!

Ich möchte diesen String von asci Zeichen 575053575748505553 in einen Solchen String wandeln 925990275

Ich habe es schon so versucht
Delphi-Quellcode:
Datum[m]:=inttostr(ord(String1[m]))
aber dann sagt man mir:

Delphi-Quellcode:
[Fehler] Unit1.pas(146): Inkompatible Typen: 'Char' und 'String'.
Ich möchte nämlich den integerstring so zuweisen
Delphi-Quellcode:
Datum:String[9];
Versuche es schon seit Stunden aber komme nicht darauf.

Danke im voraus!!

sirius 17. Sep 2007 15:00

Re: asci in Integer!!
 
Was ist denn das für eine Berechnungsvorschrift/etc.
575053575748505553 --> 925990275

leddl 17. Sep 2007 15:05

Re: asci in Integer!!
 
Zitat:

Zitat von sirius
Was ist denn das für eine Berechnungsvorschrift/etc.
575053575748505553 --> 925990275

Immer 2 Ziffern als ASCII-Codierung für ein Zeichen ;)

//Edit:
Ungetestet (da kein Delphi hier auf der Arbeit) und nur gschwind runtergeschludert:
Delphi-Quellcode:
function ASCIIToString(String s) : String;
var i : Integer;
Begin
  i := 0;
  result := '';
  while i < length(s) do
  begin
    temp := Copy(s,i,2);
    result := result + Chr(StrToInt(temp));
    inc(i,2);
  end;
end;
Keine Ahnung, ob das passt, sollte es aber eigentlich... :gruebel: Wobei, üblicherweise verstecke ich immer mindestens 2 Fehler in solchen Codestückchen :lol:
Wichtig ist hier auch, dass der ASCII-String natürlich eine gerade Anzahl Zeichen haben muss, sonst knallts ;) Musst also evtl. noch etwas daran arbeiten

Kedariodakon 17. Sep 2007 15:14

Re: asci in Integer!!
 
Sowas in der Art sollte es tun...
Delphi-Quellcode:
Function OrdStrToChrStr( Const sOrd: String ): String;
Var len:   Integer;
    i:     Integer;
    iOut:  Integer;
    sPart: String;
Begin
  Result := '';
  len    := Length( sOrd );
  i      := 1;
  While i <= Len Do Begin  
    If i = Len Then Begin
      sPart := sOrd[ i ];
      Inc( i );
    End Else Begin
      sPart := sOrd[ i ] + sOrd[ i +1 ];
      Inc( i, 2 );
    End;
    If TryStrToInt( sPart, iOut ) Then Result := Result + Chr( iOut )
    Else                              Raise Exception.Create( 'No int: "' + sPart + '"' );
  End;
End;

Bye Christian

Edit: Funktionsnamen geändert... :zwinker:

sirius 17. Sep 2007 15:14

Re: asci in Integer!!
 
Zitat:

Zitat von leddl
Zitat:

Zitat von sirius
Was ist denn das für eine Berechnungsvorschrift/etc.
575053575748505553 --> 925990275

Immer 2 Ziffern als ASCII-Codierung für ein Zeichen ;)

Man sieht, dass du aus einer ganz anderen Perspektive schaust :)

Also:
1. Hat der Compiler (wie immer) Recht, dass du aus inttostr einen String bekommst und den in einen Char von Datum reinpressen willst. Besser in dem Fall du hängst einfach an (Datum:=Datum+ ... )
2. Soll string1[m] auf 57 .. etc zugreifen und nicht auf "5" und als nächstes auf "7"

Da musst du wohl noch ein bisschen basteln.
(Glück muss man haben. Warum gabs eigentlich keinen roten Kasten :twisted: )

angos 17. Sep 2007 15:15

Re: asci in Integer!!
 
Hi leddl,

wenn es [b]IMMER[/b] zwei zeichen sind, hilft dir vielleicht das:
Delphi-Quellcode:
function Umwandeln(sSrc: String): String;
var
  i, dez: Integer;
begin
  Result := '';
  i := 1;
  while i < (length(sSrc) - 1) do
  begin
    if not TryStrToInt(sSrc[i] + sSrc[i+1], dez) then
      dez := 0;
    Result := Result + Chr(dez);
    inc(i, 2);
  end;
end;
Grüße

leddl 17. Sep 2007 15:19

Re: asci in Integer!!
 
Zitat:

Zitat von angos
Hi leddl,

wenn es [b]IMMER[/b] zwei zeichen sind, hilft dir vielleicht das:
Delphi-Quellcode:
function Umwandeln(sSrc: String): String;
[...]

Wie gesagt, ich hab nicht viel Zeit drauf verwendet, und es einfach runtergeschrieben. Es ging mir dabei weniger darum, den Code schon perfekt zu machen, als eher darum, dass Delphieinsteiger einen Grundbaustein bekommt, den er für sich noch verbessern kann :zwinker:

//Edit:
Ei ei ei, ich sehe gerade, du antwortest nicht auf mein Edit :lol: Ich nix Threadstarter, ich sein nur Helfer mit Durchblick :stupid:

Progman 17. Sep 2007 15:19

Re: asci in Integer!!
 
Delphi-Quellcode:
Datum[m]:=inttostr(ord(String1[m]))
Datum[m] ist ein Zeichen, also ein Char, die ord-Funktion gibt (in einen String umgewandelt) 2 Zeichen zurück, dadurch klappt das nicht, denke ich.

angos 17. Sep 2007 15:21

Re: asci in Integer!!
 
Hi leddl,

sorry meinte nicht dich, sondern den Delphieinsteiger ;) hab wohl mal wieder die finger nicht mitm kopp verbunden :)

Delphieinsteiger 17. Sep 2007 17:06

Re: asci in Integer!!
 
Vielen Dank für die vielen Tipps!!

Ich denke jetzt müßte ich es hinkriegen. :thumb:
Werde es morgen direkt ausprobieren!

Also Danke an alle!!


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