Session de bdd partagée - Delphi/Pascal - Programmation
Marsh Posté le 10-10-2005 à 22:53:21
Et c'est quoi ces "autres choses" que tu partages Si ce sont des classes c'est normal que ça plante...
Marsh Posté le 11-10-2005 à 09:41:27
Ces "autres choses" peuvent être un TDatabase, un TOraSession, un TQuery, ... de quoi se connecter à une bdd ou en récupérer des données.
Pourquoi est-ce normal que ça plante ?
Il est quand même possible que deux exe partagent la même mémoire. Donc si on met l'adresse du pointeur d'un objet en zmp, on doit quand même pouvoir le récupérer et accéder à l'objet dans le deuxième exe.
N'y aurait-il pas un pb d'offset ?
Marsh Posté le 11-10-2005 à 10:32:57
Chaque exe a ses propres classes. Pour toi elles ont le même nom, pour lui les objets pointent vers des classes différentes... Ce que tu passes comme étant un TDatabase, il le reçoit comme un objet de type "classe à l'adresse XYZ", mais cette adresse XYZ est dans l'espace mémoire de l'autre application. Son TDatabase a lui c'est la classe à l'adresse ABC par exemple.
Marsh Posté le 10-10-2005 à 10:20:45
Salut,
J'essaie de partager une session de base de données entre plusieurs appli.
Pour cela, j'utilise une zone de mémoire partagée (zmp) à partir d'une dll.
La première appli se connecte à la base et copie la session dans la zmp avec CreateFileMapping, MapViewOfFile et CopyMemory.
La deuxième appli récupère la session de la zmp avec OpenFileMapping et MapViewOfFile.
Le pb c'est que ça plante avec une violation d'accès.
En fait le partage de chaines ou d'entiers marche très bien mais dès que l'on veut partager autre chose alors là, c'est un feu d'artifice.
Quelqu'un a-t-il une expérience là dessus ? Des pistes ? Des exemples de code ?
Merci
A+
Xavier.