cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
4 mars 2009 à 13:08
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 2019
-
4 mars 2009 à 17:28
Elle affiche ce qu'on lui passe, l'adresse de a quoi, vu que en var c'est un pointeur qui est passé. Moi je voudrais qu'elle m'affiche 0, car pour moi a doit être NULL. J'ai pas de a en somme.
Toto(nil); compile pas...
var
lpNil: Pointer;
begin
lpNil:= nil;
Toto(Cardinal(lpNil));
Fait passer l'adresse de lpNil...
Bref quelqu'un à une idée ?? Ca doit être tout bête mais je vois pas. Merci d'avance.
donc la fonction toto, pouvant accépter Nil sera a modifier comme suis :
type
pCardinal = ^cardinal;
procedure Toto(const pA: pCardinal); stdcall;
pA ne peut etre alloué ou désalloué par la fonction, mais son contenus peut etre modifié
procedure Toto(var pA: pCardinal); stdcall;
pA peut etre alloué ou désalloué par la fonction et son contenus peut egalement etre modifié
procedure Toto(const pA: pCardinal); stdcall;
begin
if pA <> nil then
ShowMessage(Format('%.8x = %d',[cardinal(pA), pA^]))
else
ShowMessage('pA = null');
end;
procedure Toto(var pA: pCardinal); stdcall;
begin
if pA = nil then
begin
New(pA);
pA^ := 0;
end;