Delphi hyperfile par odbc

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 231 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

Messages postés
1
Date d'inscription
jeudi 19 août 2004
Statut
Membre
Dernière intervention
9 février 2013

merci
Messages postés
7
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
11 octobre 2011

merci beaucoup
Messages postés
2
Date d'inscription
jeudi 9 février 2006
Statut
Membre
Dernière intervention
18 octobre 2009

Pourtant je n'arrive pas à extraire les fichiers de l'exécutable renommé en ZIP. Le fichier ZIP contenu à l'intérieur est protégé par mot de passe. Enfin, c'est ce que réclame Izarc. Je réessaierai avec un autre décompresseur. Quoi qu'il en soit la société qui développe en Windev pour nous pourra me donner le driver ODBC ou un autre moyen d'accès aux données, je voulais juste essayer par moi même, n'étant pas développeur Windev.
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
klixx, désolé de te contredire, mais il n'y a aucun mot de passe sur le fichier suivant (téléchargeable via le support windev12) :
ftp://ftp3.pcsoft.com/wx12_56c/us/commun/WX120PACKUSODBC056c.exe
Je n'ai pas regardé la version 14 car je ne bosse plus sur Delphi. Les dll de la version 11 semblent être indisponibles (sauf dans l'exécutable de 993 mo, peut être...), mais je pense que ça doit marcher avec celles de la 12 (penser à modifier le code...). Il semblerait aussi que la "structure" du pilote odbc ait changé sur la version 14 (est-ce toujours de l'hf7 ?)
Messages postés
2
Date d'inscription
jeudi 9 février 2006
Statut
Membre
Dernière intervention
18 octobre 2009

Voui Zouriteman, sauf que le fichier Zip est protégé par un mot de passe... Sans doute une modification plus récente que ton post. Donc il faut bien Windev installé pour que le pilote s'installe.
Afficher les 12 commentaires

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.