[Delphi 7 BDE] Erreur à la modification de NetFileDir en multithread

, par  ramal

Contexte :

J’ai une DLL win32 développée avec Delphi 7, j’utilise le BDE pour les accès base de donnée (mysql, access, ...).
Ma DLL win32 est appelée par une application ASP.NET (développée en Delphi 2006).

La DLL doit supporter les accès multithread, car chaque fois qu’un navigateur (IE, Firefox, ...) se connecte à l’application, celà résulte en un accès à la DLL dans un thread distinct, mais les ressources de la DLL sont communes.

Chaque thread dans la DLL crée un TSession pour ses accès base de données (nécéssaire pour le support multithread avec le BDE).

Chaque TSession dispose d’un dossier PrivateDir distinct, mais le dossier NetFileDir est commun à tous les objets TSession.

Problème :

Sur certains postes de travail, j’ai une erreur à l’initialisation quand je change le paramètre NetFileDir du TSession propre au thread.

Le problème ne se produit pas sur le poste de développement mais sur les postes clients sur lesquels l’application a été installée (à l’aide d’installshield express, fourni avec Delphi 7 Entreprise).

Ce problème semble lié à l’absence du fichier PDOXUSRS.NET dans le dossier C :\

Solution :

Si le changement de NetFileDir de la nouvelle session provoque une erreur, alors je retente le changement de NetFileDir ou la création de la session en désactivant la session par défaut auparavent et en mettant le NetFileDir de la session par défaut à chaine vide ’’.

Exemple de code (non fonctionnel, à adapter) :