Delphi hyperfile par odbc

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 878 fois - Téléchargée 36 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
-
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
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
9 -
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
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
9 -
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
-
Merçi pour tous
zouriteman
Messages postés
27
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
2 janvier 2016
-
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.