Bonjour à tous,
Je reprends de vieux prgrammes (Quand je dis "vieux" c'est du Delphi 1.0) voire du Pascal 5.0 qui marchait avant windows.
Voilà. Ma mémoire me fait défautSurtout quand il y a des pointeurs explicites et pire encore si je dois leur affecter une valeur.
Si je faisLe compilateur me renvoie "La partie gauche n'est pas affectable".
Code : Sélectionner tout - Visualiser dans une fenêtre à part Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) + 2)^];
Donc voilà
Je bute depuis des heures sur un code pourtant très simple (voir ci-dessous)Il s'agit juste de récupérer des couleurs RGB dans une chaîne.
Je voudrais, dans la mesure du possible ne pas faire des lourdes modifs qui reviendraient finalement à tout ré-écrire en Delphi XE10.2 Tokyo.
Donc, avant que de tout mettre en commentaire et de faire du code "à la sauvage", j'ai pensé que poser la question sur ce forum serait une bonne idée.
Qu' elqu'un at'il une idée?
Il est tard et le mieux est de reprendre cela demain matin à tête reposée au lieu de me lancer dans une grosse reprogrammation façon "bourrin"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 procedure TChunkIDAT.CopyInterlacedRGB8(const Pass: Byte; Src, Dest, Trans{$IFDEF Store16bits}, Extra{$ENDIF}: pChar); var Col: Integer; i:byte; begin {Get first column and enter in loop} Col := ColumnStart[Pass]; Dest := pChar(Longint(Dest) + Col * 3); //3 colonnes repeat {Copy this row} Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) + 2)^]; inc(Dest); Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) + 1)^]; inc(Dest); Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) )^]; inc(Dest); {Move to next column} inc(Src, 3); inc(Dest, ColumnIncrement[Pass] * 3 - 3); inc(Col, ColumnIncrement[Pass]); until Col >= ImageWidth; end;qui dénaturera ce
programme.
Merci d'avance à tous ceux dont la mémoire n'a pas flanché sur le Pascal des neiges d'antanet qui auraient une idée.
Vadim
Partager