Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Help translate from C (https://www.delphipraxis.net/162360-help-translate-c.html)

WojTec 18. Aug 2011 19:54

Delphi-Version: 2010

Help translate from C
 
Code:
int ctoi(char source)
{ /* Converts a character 0-9 to its equivalent integer value */
   if((source >= '0') && (source <= '9'))
      return (source - '0');
   return(source - 'A' + 10);
}

char itoc(int source)
{ /* Converts an integer value to its hexadecimal character */
   if ((source >= 0) && (source <= 9)) {
      return ('0' + source); }
   else {
      return ('A' + (source - 10)); }
}
I don't understand what thes function are doing - convert character to ASCII code and back to character? Nope, I tried Ord/Chr and result was bad. WTF mean number + character statement :lol:?

How to in Delphi? Please? :)

himitsu 18. Aug 2011 20:14

AW: Help translate from C
 
Zitat:

Delphi-Quellcode:
return(source - 'A' + 10);

In Delphi muß man die Typen erst casten.
Delphi-Quellcode:
Result := Ord(source) - Ord('A') + 10;
.

Den Rest solltest du selber Übersetzen können.

Und den Grund für diese Brechnungen findet man, wenn man sich mal die ordinalen Werte eines Char ansieht.
Bei Google suchenASCII Tabelle






Ich nehme dafür aber gerne Array-Konstanten.

Delphi-Quellcode:
const ctoi: array['0'..'F'] of Byte = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15);


const itoc: array[0..15] of Char = '0123456789ABCDEF';
// oder
const itoc: array[0..15] of Char = ('0', '1', '2', ..., 'E', 'F');
Ein kleiner Array-Zugriff ist irgendwie einfacher, als eine "komplizierte" Berechnung.

gammatester 18. Aug 2011 20:35

AW: Help translate from C
 
The purpose of the functions is given in the comments.

The character type in C is an integer type. Enough said.


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