De mon côté, j'en suis là, face à un mur grand comme l'Everest et pas la moindre prise pour s'accrocher :
j'ai d'abord pas mal étudié le projet "
espagnol" en commençant par explorer un peu leur... forum, oui, et je n'y ai rien trouvé de particulier sauf le fait que c'est un forum Delphi donc Windows, et ça a son importance, car pour pouvoir compiler sous Linux il me faut, d'après le web, remplacer
CopyMemory(dst src cnt) par
Move(src dst cnt), comme ça :
1 2 3 4 5
| {$IFDEF MSWINDOWS}
CopyMemory(@b[0], GifLZW, blocksize); // code original, CopyMemory inconnu sous Linux
{$ELSE}
Move(GifLZW^, b[0], blocksize);
{$ENDIF} |
avec
1 2 3
| GifLZW: PBYTE;
b: array [0..255] of BYTE; // Read buffer
blocksize: integer; // Bytes in next block |
Le problème c'est que des fichiers bien affichés sous Windows sont en vrac sous Linux.
Mais pas tous ! Les tout petits fichiers (6x8, 12x12, aux couleurs unies en aplat [Animaux-0, balle, Didll-0, etc.]) ne sont pas impactés.
Ce remplacement intervient 3 fois dans le code, toujours dans la
function TGIF.UnZipImage mais est-ce vraiment la mise en œuvre du
Move qui met sa pagaille ? Sans doute, car sous XP les 16 images de la girl s'affichent (mal assemblées, voir tout en bas).
Partager