Hallo,
Ik wil een TColor (= integer) omzetten naar 1 palette en 3 byte waarden voor RGB. Het TColor type zit (volgens de handleiding) als volgt in elkaar :
De eerste byte bevat het palette type. Dit mag 0, 1 of 2 zijn. Bytes 2 TM 4 bevatten een RGB waarde. Dus deze integer (hexadecimaal 01FFEE99) geeft aan dat palette type 1 is gebruikt, roodwaarde is FF, groenwaarde is EE, blauwwaarde is 99.
Nou dacht ik de conversie als volgt te doen : een record aanmaken met 4 Byte waardes, en dat record de waarde van de TColor toewijzen. Dat record ziet er dus als volgt uit :
Ze hebben dezelfde grootte, dus technisch gezien is het geen probleem lijkt mij. Punt is dat de compiler het niet pikt.
Wie weet een methode om dit met zo min mogelijk CPU-time gebruik op te lossen? Delen of typeconversies zijn allebei wel mogelijk, maar ik heb snelheid nodig...
Ik wil een TColor (= integer) omzetten naar 1 palette en 3 byte waarden voor RGB. Het TColor type zit (volgens de handleiding) als volgt in elkaar :
De eerste byte bevat het palette type. Dit mag 0, 1 of 2 zijn. Bytes 2 TM 4 bevatten een RGB waarde. Dus deze integer (hexadecimaal 01FFEE99) geeft aan dat palette type 1 is gebruikt, roodwaarde is FF, groenwaarde is EE, blauwwaarde is 99.
Nou dacht ik de conversie als volgt te doen : een record aanmaken met 4 Byte waardes, en dat record de waarde van de TColor toewijzen. Dat record ziet er dus als volgt uit :
code:
1
2
3
| type PRGB = record Palette, Red, Green, Blue : Byte; end; |
Ze hebben dezelfde grootte, dus technisch gezien is het geen probleem lijkt mij. Punt is dat de compiler het niet pikt.
Wie weet een methode om dit met zo min mogelijk CPU-time gebruik op te lossen? Delen of typeconversies zijn allebei wel mogelijk, maar ik heb snelheid nodig...
Genoeg is meer dan veel, en tart den overvloed