Delphi hyperfile par odbc

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 904 fois - Téléchargée 38 fois


Contenu du snippet

La procédure suivante permet d'installer le pilote ODBC pour HyperFile7 sans avoir
à installer Windev ou une application distribuée Windev, et de créer l'"alias" de base
de donnée de l'application. Testé sous xp et vista.

Ici l'"alias" est créé en source de données système, ce qui permet de ne pas avoir à
le créer pour chaque utilisateur.

Je vais encore me faire gronder par Julio qui va me dire qu'un .Reg aurait suffit,
mais, je préfère gérer ça dans mon application (Qu'est-ce qui va empêcher l'utilisateur
final de double-cliquer 5 fois de suite sur le .Reg en croyant qu'il va démarrer
l'application ?). Et puis là, c'est tout fait, ça marche, y'a plus qu'à copier coller.
L'intérêt de cette "source" est plus dans son côté pratique que technique. J'espère que ça pourra servir à d'autres.

NB : Delphi gère impécablement l'hyperfile à condition de tout gérer en SQL. (avec D5
en tout cas)

Source / Exemple :


procedure TForm1.FormCreate(Sender: TObject);
var
{--------------------------------}
   LSL_Values   : TStrings;
{--------------------------------}
   LREG_TMP     : TRegistry;
{--------------------------------}
   LS_AppKey,
   LS_DrvKey,
   LS_ODBCKey,
   LS_HF7Key,
   LS_SysDir,
   LS_RepWin,
   LS_Ressources,
   LS_Analyse,
   LS_MonPilote,
   LS_RepAppli  : string;
{--------------------------------}
   LIni_Temp    : TIniFile;
{--------------------------------}
begin
     LS_RepAppli   := ExtractFilePath(Application.ExeName);
     LS_MonPilote  := 'NOM DU PILOTE';
     LS_Analyse    := 'MonAnalyse.WDD';
     LS_SysDir     := GetWindowsSystemFolder;      // ! Ces deux fonctions sortent de JclSysInfo !
     LS_RepWin     := GetWindowsFolder;            //
     LS_SysDir     := PathAddSeparator(LS_SysDir);
     LS_RepWin     := PathAddSeparator(LS_RepWin);
     LS_RepAppli   := PathAddSeparator(LS_RepAppli);
     LS_Ressources := LS_RepAppli +'Ressources\'; // Dossier dans lequel se trouvent les 3 DLL windev
                                                  // necessaires à l'installation du pilote odbc
                                                  // On peut les trouver sur le net...
                                                  // Attention, normalement, on ne peut les distribuer
                                                  // que si on est en possession d'une licence Windev
     LS_HF7Key  := 'SOFTWARE\ODBC\ODBCINST.INI\Hyper File 7';
     LS_ODBCKey := 'SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers';
     LS_DrvKey  := 'SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources';
     LS_AppKey  := 'SOFTWARE\ODBC\ODBC.INI\'+ LS_MonPilote;
     LREG_TMP   := TRegistry.Create;
     with LREG_TMP do begin
          RootKey := HKEY_LOCAL_MACHINE;
          if not KeyExists(LS_HF7Key) then begin
             // CREATION DU DRIVER ODBC
             // Copie des dll de "Ressources" dans le dossier système du pc
             WinExec(PChar('cmd.exe /c "Copy /Y "'+ LS_Ressources +'WD110*.dll" "'+ LS_SysDir +'WD110*.dll""'), SW_HIDE);
             Application.ProcessMessages;
             OpenKey(LS_HF7Key, True);
             // Enregistrement du pilote hyperfile dans la liste des pilotes ODBC
             WriteString('APILevel', '1');
             WriteString('ConnectFunctions', 'NYN');
             WriteString('Driver', LS_SysDir +'WD110HFO.DLL');
             WriteString('DriverODBCVer', '02.10');
             WriteString('FileExtns', '*.wdd');
             WriteString('FileUsage', '0');
             WriteInteger('Language', 0);
             WriteString('Setup', LS_SysDir +'WD110HFO.DLL');
             WriteString('SQLLevel', '0');
             WriteInteger('UsageCount', 0);
             CloseKey;
             OpenKey(LS_ODBCKey, True);
             // Installation du pilote
             WriteString('Hyper File 7', 'Installed');
             CloseKey;
          end;
          if not KeyExists(LS_AppKey) then begin
             // CRÉATION DE L'ALIAS HYPERFILE
             OpenKey(LS_AppKey, True);
             // Enregistrement du fichier d'analyse WinDev
             WriteString('Analyse', LS_RepAppli + LS_Analyse);
             WriteString('Driver', LS_SysDir +'WD110HFO.DLL');
             // Repertoire où se trouvent les fichiers de base de données
             WriteString('RepFic', LS_RepAppli);
             CloseKey;
             OpenKey(LS_DrvKey, True);
             LSL_Values := TStringList.Create;
             GetValueNames(LSL_Values);
             if LSL_Values.IndexOf(LS_MonPilote) = -1
                then WriteString(LS_MonPilote, 'Hyper File 7');
             LSL_Values.Free;
             CloseKey;
             LIni_Temp := TIniFile.Create(LS_RepWin + 'ODBC.INI');
             LIni_Temp.WriteString('ODBC 32 bit Data Sources', LS_MonPilote, 'Hyper File 7 (32 bits)');
             LIni_Temp.WriteString(LS_MonPilote, 'Driver32', LS_SysDir +'WD110HFO.DLL');
             LIni_Temp.Free;
          end;
     End;
     LREG_TMP.Free;
end;

Conclusion :


-

A voir également

Ajouter un commentaire Commentaires
cs_JeAnPhI77 Messages postés 2 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 14 janvier 2009
14 janv. 2009 à 13:12
bonjour

juste pour infos le driver odbc est en libre téléchargement (encore heureux) ici :

http://www.pcsoft.fr/st/telec/modules-communs-12/wx12_56c.htm#TELEC

merci

@+
sp40 Messages postés 1284 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
14 janv. 2009 à 14:11
Pour info également, ceci est inscrit au dessus du portail de téléchargement :

Comment installer la mise à jour ?
1. WinDev 12 ou/et WebDev 12 ou/et WinDev Mobile 12 doit obligatoirement être installé avant d'exécuter l'installation de cette version.
sp40 Messages postés 1284 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
14 janv. 2009 à 15:19
En revanche, en décompressant ce fichier avec winrar, on peut récupérer les 3 dll nécessaires à l'installation du driver... ;)
faouzimounia Messages postés 4 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 14 janvier 2009
14 janv. 2009 à 16:06
Merçi pour tous
zouriteman Messages postés 26 Date d'inscription lundi 3 janvier 2005 Statut Non membre Dernière intervention 11 mars 2023
31 janv. 2009 à 09:44
Cela m'interesse beaucoup , mais
a) peux tu donner un mini exemple d'utilisation ( en D5 puisque tu dis que ça marche impec)
b) que faire si l'analyse WDD et/ou les fichiers HF7 ( des *.FIC) sont cryptés ou protégés par un password inconnu ?
J'utilise un logiciel professionnel (domaine santé/médical) écrit en WinDEV, en passant d'une version 6 à 7, le fournisseur a crypté certains fichiers, que je pouvais auparavant lire (via un ViewerHF) et convertir en DBF ou TEXT CSV, ce qui me permettait de charger l'image des données dans Excel et faire divers travaux genre statistiques.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.