Autor Beitrag
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Di 20.06.06 11:22 
Hallo,

das ist zwar keine Unit, sondern nur 2 Funktionen, aber vielleicht sind sie für jemanden brauchbar :)

Zur Erklärung :

ausblenden 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.

ausblenden 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 :

ausblenden volle Höhe Delphi-Quelltext
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;
{
--> Hexzahl als String
<-- result = Dualzahl als String
}

var
  i: Integer;
begin
//jedes Zeichen durchgehen und dem entsprechendem Nibble zuordnen
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 //ungültiges Zeichen
      begin
      Result := sHex + ' ist keine gültige Hexadezimalzahl';
      exit;
      end;
    end;
  end;
end;


ausblenden volle Höhe Delphi-Quelltext
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;
{
--> Dualzahl als String
<-- result = Hexzahl als String
}

var
  i: Integer;
  nNibble : Integer;
  nibble: string;
  tmpHex: string;
  sHex: string;
begin
// Wenn Anzahl der Zeichen nicht durch 4 teilbar,
// dann entsprechend viele Nullen voranstellen
  if length(sdual) mod 4 > 0 then
    for i := 1 to (4 - (length(sdual) mod 4)) do
      sdual := '0' + sdual;

  sHex := ''//sHex intitialisieren

  nNibble := ((length(sdual) div 4));  //Anzahl der Nibble

  for i := 1 to nNibble do
  begin
    //Nibble aus sdual extrahieren
    nibble := copy(sdual, ((i-1) * 4) +1 , 4);

   // Nibble dem entsprechendem Hex-Wert zuordnen
    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
    // ungültiger Nibble
      result := sdual + ' ist keine gültige Dualzahl';
      exit;
      end;
    // Hex-Wert wird zusammengesetzt
    sHex := sHex + tmpHex;
  end;
  result := sHex;
end;
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 20.06.06 11:33 
Sowas ähnliches haben wir schon. Guggst du hier. Trotzdem ein schöner Ansatz. :zustimm: