Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Table de RESsources

3 réponses
Avatar
André Joubert
Bonjour/soir,
J'aime placer mes routines communes dans une DLL. Je
voudrais y placer une fonction qui récupère les informations de la table de
ressources du programme principal (le EXE).

Est-ce possible? Selon mes tests, il semble que non! J'ai obtenu erreur 326.
Y aurait-il une façon d'obtenir ce que je veux, c'est-à-dire une routine
standard qui récupère les informations de la table de ressources et qui
n'est pas compilée dans le EXE, mais bien dans une DLL ou autre moyen?
Peut-être qu'il y a autre chose que les DLLs pour conserver mes routines
communes?

Merci d'avance
André

3 réponses

Avatar
François Picalausa
Bonjour/soir,

une solution est de demander un objet décrivant tes ressources au programme
principal (au travers d'une propriété ou d'un événement).
Une autre possibilité est d'utiliser des fichiers XML ou INI pour stoquer
tes ressources.

Pour des routines communes, tu peux créer une série de classes/modules que
tu ajoutes dans le dossier templates sous le dossier d'installation de VB.
Lorsque que tu fera nouvelle classe/nouvea module, ceux ci te seront alors
proposés.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"André Joubert" a écrit dans le message de
news:xKl2c.20800$
Bonjour/soir,
J'aime placer mes routines communes dans une DLL. Je
voudrais y placer une fonction qui récupère les informations de la table


de
ressources du programme principal (le EXE).

Est-ce possible? Selon mes tests, il semble que non! J'ai obtenu erreur


326.
Y aurait-il une façon d'obtenir ce que je veux, c'est-à-dire une routine
standard qui récupère les informations de la table de ressources et qui
n'est pas compilée dans le EXE, mais bien dans une DLL ou autre moyen?
Peut-être qu'il y a autre chose que les DLLs pour conserver mes routines
communes?

Merci d'avance
André




Avatar
André Joubert
Merci,
J'ai essayé la première solution avec un objet et je n'ai pas
réussi. J'ai crû que ce n'était pas possible. Je vais m'y remettre, j'ai dû
me tromper à quelque part. J'avais la solution du fichier .INI en réserve
comme dernière solution.

Merci aussi de me diriger vers les templates, je ne caonnaissais
pas
André

"François Picalausa" wrote in message
news:
Bonjour/soir,

une solution est de demander un objet décrivant tes ressources au


programme
principal (au travers d'une propriété ou d'un événement).
Une autre possibilité est d'utiliser des fichiers XML ou INI pour stoquer
tes ressources.

Pour des routines communes, tu peux créer une série de classes/modules que
tu ajoutes dans le dossier templates sous le dossier d'installation de VB.
Lorsque que tu fera nouvelle classe/nouvea module, ceux ci te seront alors
proposés.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"André Joubert" a écrit dans le message de
news:xKl2c.20800$
> Bonjour/soir,
> J'aime placer mes routines communes dans une DLL. Je
> voudrais y placer une fonction qui récupère les informations de la


table
de
> ressources du programme principal (le EXE).
>
> Est-ce possible? Selon mes tests, il semble que non! J'ai obtenu erreur
326.
> Y aurait-il une façon d'obtenir ce que je veux, c'est-à-dire une routine
> standard qui récupère les informations de la table de ressources et qui
> n'est pas compilée dans le EXE, mais bien dans une DLL ou autre moyen?
> Peut-être qu'il y a autre chose que les DLLs pour conserver mes routines
> communes?
>
> Merci d'avance
> André
>
>




Avatar
François Picalausa
Bonjour/soir,

essaye ceci:
Crée deux nouveau projets, un standard Exe et un activeX dll
dans le projet standard exe, référence le projet dll activeX

Dans le projet activex:
Dans class1 (créé par défaut):
Option Explicit

Private mRes As IRessourceMgr

Public Property Set Ressources(NewResManager As IRessourceMgr)
Set mRes = NewResManager
End Property

Public Sub Init()
MsgBox mRes.GetResString(0)
End Sub

Toujours dans le projet activeX, tu ajoute une classe IRessourceMgr:
Option Explicit

Public Function GetResString(Id As Long) As String

End Function

Dans l'exe standard:
Un nouveau module de classe RessourceMgr:
Option Explicit

Implements IRessourceMgr

Private Function IRessourceMgr_GetResString(Id As Long) As String
IRessourceMgr_GetResString = "Hello"
End Function

Dans form1:
Option Explicit

Private Sub Form_Load()
Dim a As New Class1
Set a.Ressources = New RessourceMgr
a.Init
End Sub

L'activex dll affiche Hello dans une msgbox.
Il faut remplacer dans le module de classe RessourceMgr par une procédure de
lecture des ressources et le tour est joué.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"André Joubert" a écrit dans le message de
news:d1n2c.20917$
Merci,
J'ai essayé la première solution avec un objet et je n'ai
pas réussi. J'ai crû que ce n'était pas possible. Je vais m'y
remettre, j'ai dû me tromper à quelque part. J'avais la solution du
fichier .INI en réserve comme dernière solution.

Merci aussi de me diriger vers les templates, je ne
caonnaissais pas
André

"François Picalausa" wrote in message
news:
Bonjour/soir,

une solution est de demander un objet décrivant tes ressources au
programme principal (au travers d'une propriété ou d'un événement).
Une autre possibilité est d'utiliser des fichiers XML ou INI pour
stoquer tes ressources.

Pour des routines communes, tu peux créer une série de
classes/modules que tu ajoutes dans le dossier templates sous le
dossier d'installation de VB. Lorsque que tu fera nouvelle
classe/nouvea module, ceux ci te seront alors proposés.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"André Joubert" a écrit dans le message de
news:xKl2c.20800$
Bonjour/soir,
J'aime placer mes routines communes dans une
DLL. Je voudrais y placer une fonction qui récupère les
informations de la table de ressources du programme principal (le
EXE).

Est-ce possible? Selon mes tests, il semble que non! J'ai obtenu
erreur 326. Y aurait-il une façon d'obtenir ce que je veux,
c'est-à-dire une routine standard qui récupère les informations de
la table de ressources et qui n'est pas compilée dans le EXE, mais
bien dans une DLL ou autre moyen? Peut-être qu'il y a autre chose
que les DLLs pour conserver mes routines communes?

Merci d'avance
André