![]() |
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:
aber dann sagt man mir:
Datum[m]:=inttostr(ord(String1[m]))
Delphi-Quellcode:
Ich möchte nämlich den integerstring so zuweisen
[Fehler] Unit1.pas(146): Inkompatible Typen: 'Char' und 'String'.
Delphi-Quellcode:
Versuche es schon seit Stunden aber komme nicht darauf.
Datum:String[9];
Danke im voraus!! |
Re: asci in Integer!!
Was ist denn das für eine Berechnungsvorschrift/etc.
575053575748505553 --> 925990275 |
Re: asci in Integer!!
Zitat:
//Edit: Ungetestet (da kein Delphi hier auf der Arbeit) und nur gschwind runtergeschludert:
Delphi-Quellcode:
Keine Ahnung, ob das passt, sollte es aber eigentlich... :gruebel: Wobei, üblicherweise verstecke ich immer mindestens 2 Fehler in solchen Codestückchen :lol:
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; 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 |
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: |
Re: asci in Integer!!
Zitat:
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: ) |
Re: asci in Integer!!
Hi leddl,
wenn es [b]IMMER[/b] zwei zeichen sind, hilft dir vielleicht das:
Delphi-Quellcode:
Grüße
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; |
Re: asci in Integer!!
Zitat:
//Edit: Ei ei ei, ich sehe gerade, du antwortest nicht auf mein Edit :lol: Ich nix Threadstarter, ich sein nur Helfer mit Durchblick :stupid: |
Re: asci in Integer!!
Delphi-Quellcode:
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.
Datum[m]:=inttostr(ord(String1[m]))
|
Re: asci in Integer!!
Hi leddl,
sorry meinte nicht dich, sondern den Delphieinsteiger ;) hab wohl mal wieder die finger nicht mitm kopp verbunden :) |
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. |
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