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

Problème passage de paramètre...

14 réponses
Avatar
zobio
Bonjour à tous,

Je vais essayer d'être le plus clair possible mais le problème n'est pas
simple... :(

Je bloque sur le passage d'un paramètre à une fonction. La fonction en
question est décrite dans un assenbly n'étant pas à moi, il s'agit d'une
fonction de Rave Report (moteur d'impression).

Voici le prototype de la fonction :

NewDataObject(TRaveDataObject.@MetaTRaveDataObject DataObjectClass)

le but de la fonction est de créer un objet dont le type sera passé en
paramètre, et c'est la que ca bloque. Comment lui passer ce paramètre ?

Si je passe un objet de type TRaveDataObject j'ai l'erreur :
Argument '1' : impossible de convertir de 'Nevrona.Rave.TRaveDataObject' en
'Nevrona.Rave.TRaveDataObject.@MetaTRaveDataObject'

Si j'essaye d'instancier un objet de type
TRaveDataObject.@MetaTRaveDataObject'
J'ai l'erreur suivante :
Le type ou le nom d'espace de noms 'MetaTRaveDataObject' n'existe pas dans
la classe ou l'espace de noms 'Nevrona.Rave.TRaveDataObject' (une référence
d'assembly est-elle manquante ?)

Alors que la classe en question m'est proposée par l'intelisense...


J'ai l'impression d'être dans un impasse, je ne comprends plus rien.
J'ai essayé de passer par System.Type ca ne marche pas non plus.

Si kkun à une idée je suis preneur.
Merci d'avance

4 réponses

1 2
Avatar
Merlin
zob a écrit :
J'ai essayé dans d'autres projets, je retrouve ces classes "@MetaMaClasse"
dans des classes MaClasse par exemple, mais toujours innutilisable.
Je ne comprends pas d'ou sortent ces @Meta... et surtout comment les
utiliser.



C'est hélas un bricolage de Delphi.NET, ce sont des classes privées
utilisées par Delphi, normal que tu ne puisses pas les utiliser même si
tu les vois sous un reflector quelconque.
C'est hélas (ici aussi) ce qui force à utiliser C# pour les libs
partagées (sans parler de petites incohérences de Delphi.NET sur la
gestion des espaces de nom).


Nevrona.Rave.TRaveDataObject
Alors qu'en C# l'infobulle me dit qu'il faut fournir un




C'est parce que pour Delphi.NET, c'est le @Metaxxx qui contient les
infos de métadonnées, normalement sans intérêt pour C#.

Je ne comprends pas...



Maintenant, sur ta machine, il y a bien Borland.System.dll ? elle est
accessible à ton projet C# ? car le pb de Delphi.NET c'est d'obliger la
présence de cette DLL (au minimum).
Il se pourrait que sans Borland.System.dll, certaines conversions de
types ne soient pas bien réalisées par exemple.

Merci beaucoup pour votre aide, je comprendrais que vous jetiez l'éponge
etant donné la galère que c'est.
Je continue a chercher...



n'hésite pas ...

J'ai fait pas mal de tests dans les deux sens C#/Delphi.NET et je n'ai
pas rencontré le problème que tu évoques. Mais il faut dire que j'avais
la maitrise du source des deux parties. Là tu essayes d'utiliser la lib
Nevrona et j'avoue ne pas avoir essayé ça sous C# !

Il se peut même que cela soit impossible. Le truc de Nevrona il marche
en VCL.NET mais peut être pas en Windows forms ?

--

///3rL1n________
www.e-naxos.com
gratuit section "Delphi Stargate"
Avatar
Patrick Philippot
Merlin wrote:
C'est hélas un bricolage de Delphi.NET, ce sont des classes privées
utilisées par Delphi, normal que tu ne puisses pas les utiliser même
si tu les vois sous un reflector quelconque.



Aaaaah! Je me coucherai moins idiot ce soir. Merci pour l'info.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
zobio
Bon et bien je jette l'éponge pour le moment...
J'ai contourné le problème en faisant une DLL Delphi.Net avec une fonction
statique qui lance la fonction en question.
C'est pas vraiment génial, mais ca me permet de continuer d'avancer...

Merci à vous deux pour votre aide...



"Merlin" a écrit dans le message de news:

zob a écrit :
J'ai essayé dans d'autres projets, je retrouve ces classes
"@MetaMaClasse" dans des classes MaClasse par exemple, mais toujours
innutilisable.
Je ne comprends pas d'ou sortent ces @Meta... et surtout comment les
utiliser.



C'est hélas un bricolage de Delphi.NET, ce sont des classes privées
utilisées par Delphi, normal que tu ne puisses pas les utiliser même si tu
les vois sous un reflector quelconque.
C'est hélas (ici aussi) ce qui force à utiliser C# pour les libs partagées
(sans parler de petites incohérences de Delphi.NET sur la gestion des
espaces de nom).


Nevrona.Rave.TRaveDataObject
Alors qu'en C# l'infobulle me dit qu'il faut fournir un




C'est parce que pour Delphi.NET, c'est le @Metaxxx qui contient les infos
de métadonnées, normalement sans intérêt pour C#.

Je ne comprends pas...



Maintenant, sur ta machine, il y a bien Borland.System.dll ? elle est
accessible à ton projet C# ? car le pb de Delphi.NET c'est d'obliger la
présence de cette DLL (au minimum).
Il se pourrait que sans Borland.System.dll, certaines conversions de types
ne soient pas bien réalisées par exemple.

Merci beaucoup pour votre aide, je comprendrais que vous jetiez l'éponge
etant donné la galère que c'est.
Je continue a chercher...



n'hésite pas ...

J'ai fait pas mal de tests dans les deux sens C#/Delphi.NET et je n'ai pas
rencontré le problème que tu évoques. Mais il faut dire que j'avais la
maitrise du source des deux parties. Là tu essayes d'utiliser la lib
Nevrona et j'avoue ne pas avoir essayé ça sous C# !

Il se peut même que cela soit impossible. Le truc de Nevrona il marche en
VCL.NET mais peut être pas en Windows forms ?

--

///3rL1n________
www.e-naxos.com
gratuit section "Delphi Stargate"




Avatar
Merlin
zobio a écrit :
Bon et bien je jette l'éponge pour le moment...
J'ai contourné le problème en faisant une DLL Delphi.Net avec une fonction
statique qui lance la fonction en question.
C'est pas vraiment génial, mais ca me permet de continuer d'avancer...

Merci à vous deux pour votre aide...



de rien... bon dev.

--

///3rL1n________
www.e-naxos.com
gratuit section "Delphi Stargate"
1 2