Hallo,
das ist zwar keine Unit, sondern nur 2 Funktionen, aber vielleicht sind sie für jemanden brauchbar
Zur Erklärung :
Delphi-Quelltext
1:
| function HexToDual(sHex:String):String; |
... erwartet als Parameter eine Hexadezimalzahl als String und gibt die passende Dualzahl als String mit Leerzeichen zwischen den Nibbles aus. Ist der Eingabeparameter keine gültige Hexadezimalzahl, ist das result eine entsprechende Meldung.
Delphi-Quelltext
1:
| function DualToHex(sdual:String):String; |
... erwartet als Parameter eine Dualzahl als String und gibt die passende Hexadezimalzahl als String aus. Ist der Eingabeparameter keine gültige Dualzahl, ist das result eine entsprechende Meldung.
Hier die Funktionen :
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| function HexToDual(sHex:String):String;
var i: Integer; begin for i := 1 to length(shex) do begin case shex[i] of '0' : result := result + '0000 '; '1' : result := result + '0001 '; '2' : result := result + '0010 '; '3' : result := result + '0011 '; '4' : result := result + '0100 '; '5' : result := result + '0101 '; '6' : result := result + '0110 '; '7' : result := result + '0111 '; '8' : result := result + '1000 '; '9' : result := result + '1001 '; 'A' : result := result + '1010 '; 'B' : result := result + '1011 '; 'C' : result := result + '1100 '; 'D' : result := result + '1101 '; 'E' : result := result + '1110 '; 'F' : result := result + '1111 '; else begin Result := sHex + ' ist keine gültige Hexadezimalzahl'; exit; end; end; end; end; |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70:
| function DualToHex(sDual:String):String;
var i: Integer; nNibble : Integer; nibble: string; tmpHex: string; sHex: string; begin if length(sdual) mod 4 > 0 then for i := 1 to (4 - (length(sdual) mod 4)) do sdual := '0' + sdual;
sHex := ''; nNibble := ((length(sdual) div 4)); for i := 1 to nNibble do begin nibble := copy(sdual, ((i-1) * 4) +1 , 4);
if nibble = '0000' then tmpHex := '0' else if nibble = '0001' then tmpHex := '1' else if nibble = '0010' then tmpHex := '2' else if nibble = '0011' then tmpHex := '3' else if nibble = '0100' then tmpHex := '4' else if nibble = '0101' then tmpHex := '5' else if nibble = '0110' then tmpHex := '6' else if nibble = '0111' then tmpHex := '7' else if nibble = '1000' then tmpHex := '8' else if nibble = '1001' then tmpHex := '9' else if nibble = '1010' then tmpHex := 'A' else if nibble = '1011' then tmpHex := 'B' else if nibble = '1100' then tmpHex := 'C' else if nibble = '1101' then tmpHex := 'D' else if nibble = '1110' then tmpHex := 'E' else if nibble = '1111' then tmpHex := 'F' else begin result := sdual + ' ist keine gültige Dualzahl'; exit; end; sHex := sHex + tmpHex; end; result := sHex; end; |