ich möchte mir ein kleines Programm schreiben, mit dem ich Farbwerte berechnen kann. Das Programm soll also beispielsweise die Mischfarbe von zwei anderen Farben berechnen. Damit ich mit den HEX-Werten rechnen kann, wollte ich sie erst mal in Dezimalwerte umrechnen. Das habe ich jetzt auch hinbekommen. Doch je länger der Quellcode wird, um so stärker beschleicht mich das Gefühl, dass es dafür vermutlich eine viel einfachere Lösung gibt. So sieht mein Quellcode für das Umrechnen der HEX-Werte bisher aus:
Code: Alles auswählen
procedure TFormHaupt.rechnen;
var
i, Ergebnis, Wert: integer;
c, Farbe1, Wert1, Wert2, Wert3: string;
begin
Ergebnis := 0;
Wert := 0;
Wert1 := '';
Wert2 := '';
Wert3 := '';
Farbe1 := '';
for i:=1 to 6 do
begin
c := LowerCase(copy(EditHauptfarbe.text, i, 1));
Farbe1 := Farbe1 + c;
end;
Label1.Caption:=Farbe1;
c := copy(Farbe1, 1, 1);
if c = 'a' then begin
Ergebnis := (Ergebnis + 10) end else
if c = 'b' then begin
Ergebnis := (Ergebnis + 11) end else
if c = 'c' then begin
Ergebnis := (Ergebnis + 12) end else
if c = 'd' then begin
Ergebnis := (Ergebnis + 13) end else
if c = 'e' then begin
Ergebnis := (Ergebnis + 14) end else
if c = 'f' then begin
Ergebnis := (Ergebnis + 15) end else
Ergebnis := (Ergebnis + StrToInt(c));
Wert := Ergebnis*15;
c := copy(Farbe1, 2, 1);
if c = 'a' then begin
Ergebnis := (Ergebnis + 10) end else
if c = 'b' then begin
Ergebnis := (Ergebnis + 11) end else
if c = 'c' then begin
Ergebnis := (Ergebnis + 12) end else
if c = 'd' then begin
Ergebnis := (Ergebnis + 13) end else
if c = 'e' then begin
Ergebnis := (Ergebnis + 14) end else
if c = 'f' then begin
Ergebnis := (Ergebnis + 15) end else
Ergebnis := (Ergebnis + StrToInt(c));
Wert := Wert + Ergebnis;
Wert1 := IntToStr(Wert);
LabelWert1.Caption:=Wert1;
Ergebnis := 0;
c := copy(Farbe1, 3, 1);
if c = 'a' then begin
Ergebnis := (Ergebnis + 10) end else
if c = 'b' then begin
Ergebnis := (Ergebnis + 11) end else
if c = 'c' then begin
Ergebnis := (Ergebnis + 12) end else
if c = 'd' then begin
Ergebnis := (Ergebnis + 13) end else
if c = 'e' then begin
Ergebnis := (Ergebnis + 14) end else
if c = 'f' then begin
Ergebnis := (Ergebnis + 15) end else
Ergebnis := (Ergebnis + StrToInt(c));
Wert := Ergebnis*15;
c := copy(Farbe1, 4, 1);
if c = 'a' then begin
Ergebnis := (Ergebnis + 10) end else
if c = 'b' then begin
Ergebnis := (Ergebnis + 11) end else
if c = 'c' then begin
Ergebnis := (Ergebnis + 12) end else
if c = 'd' then begin
Ergebnis := (Ergebnis + 13) end else
if c = 'e' then begin
Ergebnis := (Ergebnis + 14) end else
if c = 'f' then begin
Ergebnis := (Ergebnis + 15) end else
Ergebnis := (Ergebnis + StrToInt(c));
Wert := Wert + Ergebnis;
Wert2 := IntToStr(Wert);
LabelWert2.Caption:=Wert2;
Ergebnis := 0;
c := copy(Farbe1, 5, 1);
if c = 'a' then begin
Ergebnis := (Ergebnis + 10) end else
if c = 'b' then begin
Ergebnis := (Ergebnis + 11) end else
if c = 'c' then begin
Ergebnis := (Ergebnis + 12) end else
if c = 'd' then begin
Ergebnis := (Ergebnis + 13) end else
if c = 'e' then begin
Ergebnis := (Ergebnis + 14) end else
if c = 'f' then begin
Ergebnis := (Ergebnis + 15) end else
Ergebnis := (Ergebnis + StrToInt(c));
Wert := Ergebnis*15;
c := copy(Farbe1, 6, 1);
if c = 'a' then begin
Ergebnis := (Ergebnis + 10) end else
if c = 'b' then begin
Ergebnis := (Ergebnis + 11) end else
if c = 'c' then begin
Ergebnis := (Ergebnis + 12) end else
if c = 'd' then begin
Ergebnis := (Ergebnis + 13) end else
if c = 'e' then begin
Ergebnis := (Ergebnis + 14) end else
if c = 'f' then begin
Ergebnis := (Ergebnis + 15) end else
Ergebnis := (Ergebnis + StrToInt(c));
Wert := Wert + Ergebnis;
Wert3 := IntToStr(Wert);
LabelWert3.Caption:=Wert3;
Label2.Caption := Wert1+' '+Wert2+' '+Wert3;
Panel1.Color:=StringToColor('$' +Farbe1);
end;