Récupérer une valeur en la tronquant ds la base de registre [Edit]

Récupérer une valeur en la tronquant ds la base de registre [Edit] - Programmation

Marsh Posté le 04-01-2002 à 11:33:16    

Salut à tous,
Je souhaite sous Delphi6 récupérer dans la base de registre une valeur de la forme suivante : version 2.xx.
Sur cette valeur, je ne souhaite conserver que le 2.xx.
 
Quelle est la commande à utiliser pour réaliser cette opération ?
 
Merci d'avance, Sylvanio

 

[edtdd]--Message édité par sylvanio--[/edtdd]

Reply

Marsh Posté le 04-01-2002 à 11:33:16   

Reply

Marsh Posté le 04-01-2002 à 12:15:13    

tu as ta chaine  

Code :
  1. sReg := 'version 2.xx';


tu fais un:

Code :
  1. iPos := pos('version ', sReg);


 
pour récuperer la position de 'version' dans ta chaine (si ca existe) et tu copies la chaine a partir de la position trouvé + la longueur de version:
 

Code :
  1. if (iPos > 0) then
  2.    sVersion := copy(sReg, iPos + length('version '), Length(sReg))
  3.   else
  4.     sVersion := 'Pas trouvé';


 
tu auras 2.xx dans sVersion...
Voila...

 

[edtdd]--Message édité par JWhy--[/edtdd]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 04-01-2002 à 12:31:11    

sinon tu fais un :
VersionNr := AnsiReplaceText(VersionNr, 'version ', '';);
 
c'est plus court à écrire :D
c'est case-insensitive contrairement à la fonction "pos".
cette fonction est définie dans StrUtils et je suis pas sûr qu'elle existe dans les versions < à 6.
 
sinon y a aussi la fonction "RightStr" plutôt que le copy, pour ne pas devoir spécifier la longueur...

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-01-2002 à 12:42:23    

:bounce:  
Merci beaucoup pour vos réponses
:jap:

Reply

Marsh Posté le 04-01-2002 à 13:41:33    

J'ai encore un petit problème ...  :D
Je souhaite récupèrer la valeur "FriendlyName" dans la base de registre, pour ce faire j'ai écrit ceci :
 
function GetRegistryValue: string;
Var logi: TRegistry;
 
        begin
        DivX4 :=TRegistry.create;
        DivX4.RootKey := HKEY_CURRENT_USER;
        DivX4.OpenKey('Software\Microsoft\ActiveMo
vie\devenum\{33D9A760-90C8-11D0-D43-0A0C911CE86}
\logi\friendlyName',False);
        result:=logi.ReadString('FriendlyName';);
        Edit1.Text:=;
        DivX4.CloseKey;
        DivX4.Free;
        ;
        end;
 
Normalement, "result" contient la valeur de la chaîne que je souhaite écrire dans un Tedit nommé "Edit1" mais je n'y arrive pas, comment faire ?

 

[edtdd]--Message édité par sylvanio--[/edtdd]

Reply

Marsh Posté le 04-01-2002 à 14:43:06    

houlà c'est quoi ce truc embrouillé ? :D
bon on va simplifier ça

Code :
  1. function GetRegistryValue: string;
  2. begin
  3.   with TRegistry.create do
  4.   try
  5.     RootKey := HKEY_CURRENT_USER;
  6.     OpenKey('Software\Microsoft\ActiveMovie\d
  7. evenum\{33D9A760-90C8-11D0-D43-0A0C911CE86}\logi
  8. \friendlyName',False);
  9.     result := ReadString('FriendlyName');
  10.     Edit1.Text := result;
  11.     CloseKey;
  12.   finally
  13.     Free;
  14.   end;
  15. end;


 
c'était quoi ce mélange divx4/logi ?

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-01-2002 à 15:06:40    

c'est moi qui me suis planté :pt1cable: , logi c'est en fait DivX4 (je voulais récupérer le numéro de la version ...).
Le problème provenait de la commande Edit1.text qu'il fallait changer en Form1.Edit1.Text ... C'est vraiment pas facile quand on débute :D .
Bon maintenant faut que je trouve comment on récupère le numéro de la version de DirectX ... et ensuite je passerais à l'étape suivante  :D bref c'est pas gagner.

 

[edtdd]--Message édité par sylvanio--[/edtdd]

Reply

Marsh Posté le 04-01-2002 à 15:10:51    

de tt façon la variable était inutile, y a le with + try/finally pour ça, et c'est plus sûr puisque avec le try/finally si y a une exception il va libérer la mémoire allouée par le create avant de sortir de la fonction, et le with permet d'optimiser le code en n'allant pas chaque fois rechercher la valeur de divx4/logi.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed