[Delphi] Problem bei Hex Zahlen ausgabe

Caith

Grünschnabel
Also hallo erstmal,
Ich habe mir mal ein Programm gemacht um die Hex Zahlen für 0-255 rauszukriegen.
das Programm läuft ja auch so ganz gut, ABER wenn der Hexwert kleiner als 10 ist gibt er mir die Zahlen immer nur so aus

Code:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

statt so:
Code:
00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F

Quelltext (etwas lang in der Unit2 | Button1.OnClick)
Code:
VAR
 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q:integer;
 a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2,m2,n2,o2,p2,q2:string;
begin
Label1.Show;
Edit1.Show;
Edit1.Text:='';
Label2.Show;
Edit2.Show;
Edit2.Text:='';

{ Umrechnung in Hex }

a:=StrToInt(LabeledEdit1.Text);
a2:='';
a2:=IntToHex(a,0);
b:=StrToInt(LabeledEdit2.Text);
b2:='';
b2:=IntToHex(b,0);
c:=StrToInt(LabeledEdit3.Text);
c2:='';
c2:=IntToHex(c,0);
d:=StrToInt(LabeledEdit4.Text);
d2:='';
d2:=IntToHex(d,0);
e:=StrToInt(LabeledEdit5.Text);
e2:='';
e2:=IntToHex(e,0);
f:=StrToInt(LabeledEdit6.Text);
f2:='';
f2:=IntToHex(f,0);
g:=StrToInt(LabeledEdit7.Text);
g2:='';
g2:=IntToHex(g,0);
h:=StrToInt(LabeledEdit8.Text);
h2:='';
h2:=IntToHex(h,0);
i:=StrToInt(LabeledEdit9.Text);
i2:='';
i2:=IntToHex(i,0);
j:=StrToInt(LabeledEdit10.Text);
j2:='';
j2:=IntToHex(j,0);
k:=StrToInt(LabeledEdit11.Text);
k2:='';
k2:=IntToHex(k,0);
l:=StrToInt(LabeledEdit12.Text);
l2:='';
l2:=IntToHex(l,0);
m:=StrToInt(LabeledEdit13.Text);
m2:='';
m2:=IntToHex(m,0);
n:=StrToInt(LabeledEdit14.Text);
n2:='';
n2:=IntToHex(n,0);
o:=StrToInt(LabeledEdit15.Text);
o2:='';
o2:=IntToHex(o,0);
p:=StrToInt(LabeledEdit16.Text);
p2:='';
p2:=IntToHex(p,0);
q:=StrToInt(LabeledEdit17.Text);
q2:='';
q2:=IntToHex(q,0);
if (a > -1) AND (a < 256) AND (b > -1) AND (b < 256) AND (c > -1) AND (c < 256) AND (d > -1) AND (d < 256) AND (e > -1) AND (e < 256) AND (f > -1) AND (f < 256) AND (g > -1) AND (g < 256) AND (h > -1) AND (h < 256) AND (i > -1) AND (i < 256) AND (j > -1) AND (j < 256) AND (k > -1) AND (k < 256) AND (l > -1) AND (l < 256) AND (m > -1) AND (m < 256) AND (n > -1) AND (n < 256) AND (o > -1) AND (o < 256) AND (p > -1) AND (p < 256) AND (q > -1) AND (q < 256) Then
begin
Edit1.Text:=a2+' 00 '+b2+' 00 '+c2+' 00 '+d2+' 00 '+e2+' 00 '+f2+' 00 '+g2+' 00 '+h2+' 00 '+i2+' 00 '+j2+' 00 '+k2+' 00 '+l2+' 00 '+m2+' 00 '+n2+' 00 '+o2+' 00 '+p2+' 00 '+q2+' 00';
Edit2.Text:='FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00';
end

{ Falls unzulässige eingabe }

else
begin
Edit1.Text:='';
Edit2.Text:='';
end;
end;

procedure TRinge.Zurck1Click(Sender: TObject);
begin
close;
end;

end.
 
Zuletzt bearbeitet:
Hmm, findest du das nicht reichlich viel Code, um eine Zahl umzuwandeln? Versuch's mal so:

Code:
function TForm1.GetHex(i: Integer):string;
begin
  result := IntToHex(i, 2);
end;
 
^^ na sowas finde ich mal cool ;) von 85 zeilen runter auf 4:p

PS: hätt genau denselben Vorschlag gepostet;) paar minuten zu spät
 
die 2 legt die Anzahl der Stellen fest, die der Ergebnisstring hat. Alternativ kannst Du natürlich auch ne Schleife von Length(Ergebnis) bis zur gewünschten Länge machen und bei jedem Lauf vorn ne 0 anfügen.

Ciao
Ralf
 
naja ist ja jetz ferti das tool hier mal ein screen (Tool ist für Spellforce zum Ch..Leichter machen *hehe*)

39009341TEST.png
 

Neue Beiträge

Zurück