Einzelnen Beitrag anzeigen

ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

ähnliche case anweisungen vereinfachen

  Alt 5. Mär 2006, 13:57
Hallo,

Ich grübel schon eine ganze Zeit daran einen ganz ähnlichen Qeullcode zu vereinfachen


Delphi-Quellcode:
     case ord(system[i]) -64 of
        1: speicher[i]:=speicher[i] + FarbenToBit(BMP.canvas.Pixels[y,x], 2, 1);
        2: speicher[i]:=speicher[i] + FarbenToBit(BMP.canvas.Pixels[y,x], 4, 2);
        3: speicher[i]:=speicher[i] + FarbenToBit(BMP.canvas.Pixels[y,x], 8, 3);
        4: speicher[i]:=speicher[i] + FarbenToBit(BMP.canvas.Pixels[y,x], 16, 4);
        5: speicher[i]:=speicher[i] + FarbenToBit(BMP.canvas.Pixels[y,x], 32, 5);
        6: speicher[i]:=speicher[i] + FarbenToBit(BMP.canvas.Pixels[y,x], 64, 6);
        7: speicher[i]:=speicher[i] + FarbenToBit(BMP.canvas.Pixels[y,x], 128, 7);
        8: speicher[i]:=speicher[i] + FarbenToBit(BMP.canvas.Pixels[y,x], 256, 8);
      end;
Das einzige worin sich die Zeilen unterscheiden sind die letzten beiden Zahlenwerte,
ich komm aber nicht drauf wie ich das mit dem 2,4,8,16,32,etc löse
Zuerst dachte ich so villeicht

speicher[i]:=speicher[i] + FarbenToBit(BMP.canvas.Pixels[y,x], 2*(ord(system[i]) -64), ord(system[i]) -64); aber das stimmt nur für die ersten 2 Zeilen..... kann wer das zusammenfasse?

Ferby
  Mit Zitat antworten Zitat