cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 2006
-
31 août 2006 à 10:09
cs_sarko
Messages postés2Date d'inscriptionmardi 28 janvier 2003StatutMembreDernière intervention19 novembre 2010
-
14 sept. 2007 à 14:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_sarko
Messages postés2Date d'inscriptionmardi 28 janvier 2003StatutMembreDernière intervention19 novembre 2010 14 sept. 2007 à 14:31
Bonjour ,
a propos du non fonctionnement de iflags ,cette
variable doit etre sur le premier push.
Le 4eme push serait le numero de fenetre /??
N'oublie pas le probleme des icones et attention aux codes
interdits .
Bon courage
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 31 août 2006 à 10:09
Salut DeadlyPredator. J'ai une petite remarque.
Sachant que Kernel et compagnie sont déjà chargés automatiquement par l'application, je ne pense pas qu'il soit nécessaire de les recharger. Autant utiliser directement l'opérateur Arobase pour récupérer l'adresse de la procédure désirée.
Exemple:
program Project1;
uses Windows, SysUtils, Dialogs;
{$R *.res}
var TickAsm, TickPascal : integer;
Address : Pointer;
begin
//APPEL EN ASSEMBLEUR
Address:=@GetTickCount;
asm
CALL Address
MOV TickAsm, EAX
end;
//APPEL EN PASCAL
TickPascal:=GetTickCount;
//LES DEUX RESULTATS SONT PAREILS
ShowMessage(Format('%d = %d',[TickAsm, TickPascal]));
end.
Cela dit le code est bon. C'est juste une autre manière de faire.
14 sept. 2007 à 14:31
a propos du non fonctionnement de iflags ,cette
variable doit etre sur le premier push.
Le 4eme push serait le numero de fenetre /??
N'oublie pas le probleme des icones et attention aux codes
interdits .
Bon courage
31 août 2006 à 10:09
Sachant que Kernel et compagnie sont déjà chargés automatiquement par l'application, je ne pense pas qu'il soit nécessaire de les recharger. Autant utiliser directement l'opérateur Arobase pour récupérer l'adresse de la procédure désirée.
Exemple:
program Project1;
uses Windows, SysUtils, Dialogs;
{$R *.res}
var TickAsm, TickPascal : integer;
Address : Pointer;
begin
//APPEL EN ASSEMBLEUR
Address:=@GetTickCount;
asm
CALL Address
MOV TickAsm, EAX
end;
//APPEL EN PASCAL
TickPascal:=GetTickCount;
//LES DEUX RESULTATS SONT PAREILS
ShowMessage(Format('%d = %d',[TickAsm, TickPascal]));
end.
Cela dit le code est bon. C'est juste une autre manière de faire.