La idea en aquesta nova aportació, és la de facilitar registrar i desenregistrar dades amb l'ajuda d'un arxiu d'entrades de registre. En el meu cas volia registrar una dll en un path de sistema. Per fer això, dins del path es volia afegir una variable de sistema. Per fer això i que el Windows ens tradueixi el path, el tipus de registre ha de ser REG_EXPAND_SZ. Llavors el registre es fa de la següent forma:
%ProgramFiles%\\MyFolder\\Mydll.dll
Guardat en una clau de tipus REG_EXPAND_SZ
El problema que vaig trobar, es que el valor del path en aquests registre ha d'estar en hexadecimal. Per trobar aquest valor, el sistema més senzill es obrir el regedit.exe i generar una clau d'aquest tipus. Un cop tenim la clau amb el path correcte l'exportem i l'afegim en els nostres fitxers .reg
Per comprovar que el path es correcte podem fer servir el UltraEdit. Es un editor molt complet, del que es pot baixar una versió d'avaluació de la pròpia pàgina. Amb ell podrem traduir el path escrit i comparar-lo amb el generat.
http://www.ultraedit.com/
Per trobar aquesta informació he consultat les següents pàgines:
http://msdn.microsoft.com/en-us/library/ms923642.aspx
http://en.wikipedia.org/wiki/Windows_Registry
http://www.pctools.com/forum/showthread.php?t=31388
Pel que fa la part de desenregistrar, solament hem d'afegir el símbol - dabant de la clau. Per exemple:
[-HKEY_CLASSES_ROOT\ObjecteCOM.coObjectCOM]
jueves, 14 de enero de 2010
miércoles, 13 de enero de 2010
Com trobar el path d'un executable
Bones, l'aportació d'avui es molt curta, però no vol dir que no sigui útil. Perqué no sabem quan podem necessitar saber el path de l'executable on estem treballant. Per exemple, ens seria útil per mostrar imatges d'una carpeta que està dins de la carpeta on es troba el nostre executable. La solució es senzilla i parteix del paràmetre amb el que obtenim el path complet de l'executable. El codi és
exeFile := ParamStr(0);
Per obtenir solament el Path ho fem de la següent forma:
pathexeFile := ExtractFilePath(ParamStr(0));
Espero que això us sigui útil.
exeFile := ParamStr(0);
Per obtenir solament el Path ho fem de la següent forma:
pathexeFile := ExtractFilePath(ParamStr(0));
Espero que això us sigui útil.
lunes, 4 de enero de 2010
MSBuild a Delphi 2007
M'he trobat amb el problema de voler moure una sèrie de fitxers dfm dins d'un path concret després de compilar. Com que no tots els fitxers es trobaven dins del mateix path, he optat per crear un Target personalitzat. L'utilització d'aquests targets esta comentada molt per sobre a llibre d'en Marco Cantú, Delph 2007 Handbook. En ell ens comentar un exemple d'afegir el resultat de la compilació en un fitxer .zip.
Tal i com es recomana, el que he fet es crear un nou fitxer .proj, en aquest fitxetr he definit el meu target. En el meu cas he fet servir un target estàndard de copia.
En aquest XML definim un nou target anomenat Copy i al tag FrontEndFiles incloem tots els fitxers i directoris que hem de tractar. Un cop fet això, hem d'afegir al dproj del projecte les següents dades:
Això farà que s'executi el nostre target en finalitzar l'execució.
Tal i com es recomana, el que he fet es crear un nou fitxer .proj, en aquest fitxetr he definit el meu target. En el meu cas he fet servir un target estàndard de copia.
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<FrontEndFiles Include="..\*.dfm;..\Articles\INTERFICIE\*.dfm;..\Clients\INTERFICIE\*.dfm;..\Colaboradors\*.dfm;..\Colaboradors\INTERFICIE\*.dfm;..\Compres\Interficie\*.dfm;..\ComunicacionsProgramesExterns\INTERFICIE\*.dfm;..\Facturacio\LIB\*.dfm;..\FormesDePagament\INTERFICIE\*.dfm;..\Frames\*.dfm;..\GestioEmpresa\*.dfm;..\HoresColaboradors\INTERFICIE\*.dfm;..\Instalacions\*.dfm;..\Instalacions\INTERFICIE\*.dfm;..\Moviments\INTERFICIE\*.dfm;..\Pressupostos\*.dfm;..\Proveidors\INTERFICIE\*.dfm" />
</ItemGroup>
<Target Name="Copy">
<Copy SourceFiles="@(FrontEndFiles)" DestinationFolder="$(OutputDir)" />
</Target>
</Project>
En aquest XML definim un nou target anomenat Copy i al tag FrontEndFiles incloem tots els fitxers i directoris que hem de tractar. Un cop fet això, hem d'afegir al dproj del projecte les següents dades:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" InitialTargets="build;Copy">
<Import Project="copy.proj" />
Això farà que s'executi el nostre target en finalitzar l'execució.
Suscribirse a:
Entradas (Atom)