Bruto
Messages postés214Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention14 mai 2004
-
16 sept. 2002 à 21:03
Bruto
Messages postés214Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention14 mai 2004
-
19 sept. 2002 à 12:54
J'utilise qq fonctions et procédures qui ont pour but de de générer un numéro CLSID.
Le prob est que je n'arrive pas à passer mes paramêtres par adresse mais par valeur. Du coup toute modification est oubliée.
j'appelle la function Creation_CLSID en premier ( voir plus loin ). La façon de procédé n'est pas tellement belle mais ce n'est pas important du moment que ça marche. Merci d'avance.
Voila les fonctions ( comment dois-je faire ? )
function Ajout_One_Hex(Car:char):Char;
begin
Ajout_One_Hex := '0';
case Car of
'0','1','2','3','4','5','6','7','8':Ajout_One_Hex := Chr(Ord(Car)+1);
'9':Ajout_One_Hex := 'A';
'A':Ajout_One_Hex := 'B';
'B':Ajout_One_Hex := 'C';
'C':Ajout_One_Hex := 'D';
'D':Ajout_One_Hex := 'E';
'E':Ajout_One_Hex := 'F';
'F':Ajout_One_Hex := '0';
end;
end;
function One(Buffer: array of char; Len:Integer):Byte;
begin
One := 1;
if (Len > -1) then
begin
if Buffer[Len] = 'F' then
begin
Buffer[Len] := '0';
One := One(Buffer, Len - 1);
end
else
begin
Buffer[Len] := Ajout_One_Hex(Buffer[Len]);
One := 0;
end;
end;
end;
procedure Add_One(Buf1:array of char; Buf2:array of char; Buf3:array of char; Buf4:array of char; Buf5:array of char);
begin
if One(Buf5, 11) = 1 then
begin
if One(Buf4, 3) = 1 then
begin
if One(Buf3, 3) = 1 then
begin
if One(Buf2, 3) = 1 then
begin
if One(Buf1, 7) = 1 then
ShowMessage('Création impossible');
end
end
end
end
end;
//Compose un CLSID
function Creation_CLSID():string;
var
Buffer1: array [0..8] of char;
Buffer2: array [0..4] of char;
Buffer3: array [0..4] of char;
Buffer4: array [0..4] of char;
Buffer5: array [0..12] of char;
Reg:TRegistry;
CLSID:string;
begin
//{00030008-0000-0000-C000-000000000046}
Buffer1 := '00000000';
Buffer2 := '0000';
Buffer3 := '0000';
Buffer4 := '0000';
Buffer5 := '000000000002';
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 17 sept. 2002 à 22:47
Ce n'est pourtant pas compliqué de passer des paramètres par adresse : il suffit d'ajouter VAR devant la déclaration :
function One(VAR Buffer: array of char; Len:Integer):Byte;
...
procedure Add_One(VAR Buf1,Buf2,Buf3,Buf4,Buf5:array of char);
De plus dans Creation_CLSID, il faut donner une valeur de retour :
...
Result := '{' + Buffer1 + '-' + Buffer2 + '-' + Buffer3 + '-' + Buffer4 + '-' + Buffer5 + '}';
ShowMessage(Result);
...
Bruto
Messages postés214Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention14 mai 2004 19 sept. 2002 à 12:54
Merci DelphiProg, renseignement intéressant mais ma procedure marche tout en évitant de supprimer ou d'écraser un CLSID existant.
Le prog est enfin opérationnel voir : Associer un icône à un dossier.