FFCAST
Messages postés36Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention 2 novembre 2015
-
14 janv. 2011 à 12:29
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
15 janv. 2011 à 02:57
bonjour !
j'ai un petit soucis. J'ai un code en C qui a été fait sous linux et je voudrai le mettre en delphi pour windows. Le seule hic, c'est qu'il y a une partie que je n'arrive pas à faire. Si quelqu'un pouvait m'aider ça serait très gentit de sa part.
le code source est le suivant :
#define u64 unsigned long long
#define u32 unsigned int
#define u16 unsigned short int
#define u8 unsigned char
Voila, c'est pour la partie du dessus pour laquelle j'ai besion d'aide. Pour le reste, je pourrai me debrouiller je pense mais si vous voulez voir l'ensenble du code source le voici :
#define u64 unsigned long long
#define u32 unsigned int
#define u16 unsigned short int
#define u8 unsigned char
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 15 janv. 2011 à 02:57
unsigned long long = pour Delphi 2005 et +, UInt64, avant on n'a pas d'équivalent, au pire utilise Int64 qui est un long long (signé )
unsigned int = Longword (ou Cardinal)
unsigned short int = Word
unsigned char = Byte
Le code en Delphi utilisant le transtypage fort "à la Delphi" :
type
u64 = Int64; // ou UInt64 si Delphi 2005 et +
u32 = Longword;
u16 = Word;
u8 = Byte;
// Récupère le u64 à l'adresse vd
function get_u64(vd: Pointer): u64;
begin
Result := Int64(vd^);
end;
// Met la valeur de l'u64 à l'adresse vd à la valeur v
procedure set_u64(vd: Pointer; v: u64);
begin
CopyMemory(vd, @v, SizeOf(u64));
end;
NOTE : il est possible que ce code ait été écrit pour les machines big-endian, or moi je suis en little-endian, donc si tu rencontre des problèmes avec ce code (pas la compilation, l'exécution) il est peut-être nécessaire de procéder à une inversion des octets pour être en accord avec la convention big-endian. Voici un snippet qui pourra alors se rendre utile (de f0xi) : http://www.codyx.org/snippet_inverser-octets-dword_112_ct_delphi_628.aspx