IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi .NET Discussion :

Comment écrire un assembly en Delphi .Net ?


Sujet :

Delphi .NET

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut Comment écrire un assembly en Delphi .Net ?
    Bonjour à tous,

    Ma question est vraiment simple : comment fait-on pour créer une assembly en Delphi .Net car je dois vraiment mal m'y prendre...

    Fred

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    sous BDS 2006, Fichier->Nouveau->Autres->Projet pour Delphi.NET->Library.
    Mais en tenant compte de ceci :
    Dans Developer Studio 2006, un fichier projet (program, library ou package) introduit implicitement son propre espace de nommage, appelé espace de nommage par défaut du projet.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par pinson
    Ma question est vraiment simple : comment fait-on pour créer une assembly en Delphi .Net car je dois vraiment mal m'y prendre...
    Je ne suis pas assez "calé" pour répondre complètement à ta question, mais peut-être trouveras-tu un début de réponse sur ce même forum à la question que j'ai posée.."Problème sous Vista".

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    Merci Laurent, sauf que maintenant je veux exporter une fonction qui renvoie COUCOU, et là on me dit :
    Procédure non protégée autorisée uniquement en compilant avec {$UNSAFECODE ON} (E2395)

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    library IndexExigence;
     
     
    {%DelphiDotNetAssemblyCompiler 'Interop.Office.dll'}
    {%DelphiDotNetAssemblyCompiler 'Interop.stdole.dll'}
    {%DelphiDotNetAssemblyCompiler 'Interop.VBIDE.dll'}
    {%DelphiDotNetAssemblyCompiler 'Interop.Word.dll'}
    {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Data.dll'}
     
    uses
      SysUtils,
      Classes,
      System.Reflection,
      System.Runtime.InteropServices,
      ULRefWord in 'ULRefWord.pas',
      UCreerIndex in 'UCreerIndex.pas',
      UGlobal in 'UGlobal.pas';
     
    [assembly: AssemblyTitle('IndexExigence')]
    [assembly: AssemblyDescription('Création d''un index des exigences dans un fichier word passé en paramètre')]
    [assembly: AssemblyConfiguration('')]
    [assembly: AssemblyCompany('SII')]
    [assembly: AssemblyProduct('')]
    [assembly: AssemblyCopyright('')]
    [assembly: AssemblyTrademark('')]
    [assembly: AssemblyCulture('fr-FR')]
     
    //
    // Les informations de version d'un assemblage sont constituées des quatre valeurs suivantes :
    //
    //      Major Version (version majeure)
    //      Minor Version (version mineure)
    //      Build Number (numéro de build)
    //      Revision (révision)
    //
    // Vous pouvez spécifier toutes les valeurs ou utiliser les valeurs par défaut pour
    // Revision et Build Numbers en utilisant '*' comme illustré ci-dessous :
     
    [assembly: AssemblyVersion('1.0.*')]
     
    //
    // Pour signer un assemblage, vous devez spécifier une clé à utiliser. Reportez-vous
    // à la documentation de Microsoft .NET Framework pour plus d'informations sur la signature d'assemblage.
    //
    // Utilisez les attributs suivants pour contrôler la clé utilisée pour la signature.
    //
    // Remarques :
    //   (*) En l'absence de clé, l'assemblage n'est pas signé.
    //   (*) KeyName désigne une clé qui a été installée dans CSP (Crypto Service
    //       Provider) sur votre machine. KeyFile désigne un fichier contenant
    //       une clé.
    //   (*) Si les valeurs de KeyFile et KeyName sont toutes deux spécifiées, le
    //       processus suivant se produit :
    //       (1) Si KeyName est trouvé dans le CSP, cette clé est utilisée.
    //       (2) Si KeyName n'existe pas et KeyFile existe, la clé
    //           de KeyFile est installée dans le CSP et utilisée.
    //   (*) Pour créer un KeyFile, vous devez utiliser l'utilitaire sn.exe (Strong Name).
    //       Quand vous spécifiez KeyFile, l'emplacement du fichier doit être relatif
    //       au répertoire de destination du projet. Si, par exemple, KeyFile est
    //       situé dans le répertoire du projet, vous devez spécifier l'attribut AssemblyKeyFile
    //       comme [assembly: AssemblyKeyFile('mykey.snk')], en supposant que votre
    //       répertoire de destination soit le répertoire du projet (valeur par défaut).
    //   (*) Delay Signing est une option avancée - Voir la documentation
    //       Microsoft .NET Framework pour davantage d'informations.
    //
    [assembly: AssemblyDelaySign(false)]
    [assembly: AssemblyKeyFile('')]
    [assembly: AssemblyKeyName('')]
     
    //
    // Utilisez les attributs ci-dessous pour contrôler la visibilité COM de votre assemblage.
    // Par défaut, l'assemblage entier est visible à COM. Définir ComVisible sur false est le
    // paramètre par défaut recommandé pour votre assemblage. Pour exposer ensuite une classe et
    // une interface à COM, définissez ComVisible sur true. Il est aussi recommandé d'ajouter un
    // attribut Guid.
    //
     
    [assembly: ComVisible(False)]
    //[assembly: Guid('')]
    //[assembly: TypeLibVersion(1, 0)]
     
    function CreerIndex : String;
    begin
     
      result := 'Coucou';
    end;
     
    exports
      CreerIndex;
     
    begin
    end.
    Mon but est d'exporter surtout une classe. Cette dll doit être utilisé avec d'autres assembly qui sont dvpés en C# et VB.Net.

    Je ne comprends rien... Je coyais que cela était super simple....

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    La clause Exports (Win32) n'est pas nécessaire car les métadonnées insérées par le compilo sont suffisantes.Il faut savoir que ta fonction standalone est transformée en une classe car tout est objet sous .NET.

    Donc ta clause Exports indique que ce code sera utilisable hors CLR, dans ce cas il est nécessaire de préciser la directive {$UNSAFECODE ON}.
    Si tu compiles en commentant la clause Exports, tu verras sous ILDASM que seul le manifest de l'assembly est modifié (indicateur de code non managé).

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    Ok Laurent, j'avais essayer avant avec une classe mais on ne l'a voit pas de l'extérieur...

    Et mon assembly s'appelle SII.IndexExigence, et je n'arrive pas à la mettre dans les uses d'un autre projet, je ne comprends pas pourquoi.

    Aurais-tu un exemple d'une assembly et d'un prog qui l'utilise ? Je pense qu'il y a quelques choses que je fais mal...

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pinson
    Ok Laurent, j'avais essayer avant avec une classe mais on ne l'a voit pas de l'extérieur...
    As-tu essayé de placer cette classe dans une unité et de référencer cette unité ?
    Verifie avec ILDasm il est d'un grand secours dans ce cas là.

    Citation Envoyé par pinson
    et je n'arrive pas à la mettre dans les uses d'un autre projet,
    C'est à dire ? tu ne le retrouve pas dans la selection ? dans ce cas regarde dans la FAQ Delphi. NET.
    Quel message d'erreur rencontres-tu ?
    Citation Envoyé par pinson
    Aurais-tu un exemple d'une assembly et d'un prog qui l'utilise ? Je pense qu'il y a quelques choses que je fais mal...
    Pas sous la main mais si j'ai le temps peut être demain. Tu n'as rien trouvé dans les Démos ? Sinon recherche sur CodeCentral je serais surpris que tu n'y trouves pas un exemple. Sinon place en PJ ton code de test cela ira plus vite.

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    Voici mes sources

    Le zip Borland.Zip est mon assembly.

    Le zip CreatIndexWord est mon prog, sachant que j'appelle ma dll dans UPrincipal. J'ai bien sûr ajouté la référence de la dll dans mon projet.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    Si tu peux m'aider, merci car je suis entrain de tout passer en C#...

Discussions similaires

  1. Réponses: 11
    Dernier message: 24/10/2012, 14h32
  2. Comment créer un .html en delphi.NET à partir d'un XML et XSL?
    Par Jayceblaster dans le forum Delphi .NET
    Réponses: 13
    Dernier message: 05/05/2006, 12h10
  3. [D2005]Comment utiliser des assembly développées en delphi
    Par Valéry dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 16/08/2005, 18h36
  4. [Delphi.NET][SDK] Comment interpréter System.Security.SecurityException?
    Par Laurent Dardenne dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 07/04/2005, 12h43
  5. [VB.NET] comment écrire du texte avec opengl?
    Par ero_senin dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/01/2005, 13h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo