HEBERGEMENT SITES INTERNET
CGI, ISAPI, ASP, Dot NET,
PHP & MySql,
DELPHI - Firebird & INTERBASE
 
Accueil
 
 

 

 

Le but de ce didactitiel est de vous faire découvrir pas à pas, la construction d'une DLL Objet ASP avec Delphi 6. Il ne sera pas question ici, de faire le tour des technologies et possibilités offertes par la dernière version de l'outil de programmation, mais simplement de vous donner la marche à suivre pour créer un Objet ASP.

 Premiers pas (Créer un Objet ASP)

Très simple, suivez pas à pas les écrans ci-dessous :

1) Fichier / Nouveau / Autres/ Onglet ActiveX

Sélectionnez "Bibliothèque ActiveX"

Delphi crée le fichier de projet
Nous vous conseillons de le sauvegarder tout de suite afin de faciliter le nommage.
Nous allons maintenant créer l’Objet ASP proprement dit

Fichier / Nouveau / Active X, Sélectionnez Active Server Page

 

Donnez un nom à votre objet, ici AspPremierObjet

Delphi vous propose d’indiquer le mode de gestion de thread (Appartement par défaut). Sauf à bien connaître la gestion multi thread, laissez les options par défaut.
Par défaut toujours, il vous est proposé de créer les methode OnStartPage et OnEndPage. Ces méthodes peuvent être très utiles. Laissez l’option cochée.
Enfin, il vous est demandé si vous souhaitez générer un script ASP. Si vous n’avez jamais utilisé ASP, laissé le coché. Cette option indique à Delphi de créer un exemple pour illustrer le format d’appel d’une objet Com Asp depuis une page ASP.
Cliquez sur OK.




Apparition de l’éditeur de Bibliothèque de type


Nous allons tout de suite créer une propriété. Pour ce faire, sélectionnez l’interface IaspPremierObjet, dépliez la, vous voyez apparaître les deux méthodes OnStartPage et OnEndPage (créés automatiquement lors de la génération par l’expert de Delphi). Cliquez sur le 10ème icône de la palette (ou le 4ème en partant de la droite) de menu et sélectionnez le type de propriété.
Pour les tests, nous vous conseillons le Mode Read/Write, par la suite, vous affinerez.



Ne soyez pas surpris, l’éditeur de bibliothèque de type crée non une mais deux propriétés. Une pour le mode Read, l’autre pour le mode Write. Dans la partie droite de la fenêtre, sélectionnez l’onglet Attribut, et indiquez le type de propriété (Chaine = BSTR, long pour entier, ect). Pour l’heure, limitez le choix des types à Long, BSTR ou OleVariant. En phase de découverte, vous vous simplifierez la vie. Par la suite, sachez que vous pouvez renvoyer un pointeur sur une interface (objet Com) ce qui peut s’avérer très pratique afin de manipuler toutes sortes d’objets au sein d’une page ASP.
Créez maintenant une méthode (neuvième icône en partant de la gauche). Nommez la (maMethode par exemple), et cliquez sur l’onglet Paramètres.


Cliquez sur ajout, par défaut Delphi place Param1 de type Long, nommez le selon votre besoin. Répétez cette action autant de fois que nécessaire.

Dans notre exemple, nous avons créé deux paramètres, unEntier et UneChaine. Nous souhaitons obtenir un résultat en retour (function), nous ajoutons donc un troisième paramètre (unResult) de type Variant* (notez l’étoile) et nous indiquons que nous souhaitons une valeur de retour en cliquant sur la case à option à droite ([IN] …) pour faire apparaître la fenêtre de définition. Le fait de cocher RetVal indique qu’il s’agit d’un retour de function. Si nous avions coché IN et OUT, nous aurions un paramètre de type VAR, similaire à celui de Delphi.

NB: Si vous n’ajoutez pas le symbole * (qui signifie qu’il s’agit d’un pointer) derrière le type, vous serez limité au paramètre de type In.
 

Sauvegardez le projet. Delphi crée MonAsp_TLB.pas (ou un autre nom selon ce que vous avez choisi) et une unité contenant TaspPremierObjet.
La première nommée est générée automatiquement, vous ne devez jamais la modifier sous peine de perdre toutes les modifications que vous feriez, lors de la prochaine génération. La seconde contient le source de votre projet.

unit uMainAsp;

interface

uses
  ComObj, ActiveX, AspTlb, MonAsp_TLB, StdVcl;

Type
 TAspPremierObjet = class(TASPObject, IAspPremierObjet)
  protected
      procedure OnEndPage; safecall;
      procedure OnStartPage(const AScriptingContext: IUnknown);
         safecall;
      function Get_Maproperty: Integer; safecall;
      function MaMethode(unEntier: Integer;
        const uneChaine: WideString): OleVariant; safecall;
      procedure Set_Maproperty(Value: Integer); safecall;
 end;

implementation

uses ComServ;

procedure TAspPremierObjet.OnEndPage;
begin
  inherited OnEndPage;
end;

procedure TAspPremierObjet.OnStartPage(const
                                   AScriptingContext:IUnknown);
begin
  inherited OnStartPage(AScriptingContext);
end;

function TAspPremierObjet.Get_Maproperty: Integer;
begin

end;

function TAspPremierObjet.MaMethode(unEntier: Integer;
  const uneChaine: WideString): OleVariant;
begin

end;

procedure TAspPremierObjet.Set_Maproperty(Value: Integer);
begin

end;

initialization
  TAutoObjectFactory.Create(ComServer, TAspPremierObjet,
  Class_AspPremierObjet, ciMultiInstance, tmApartment);
end.


Il ne vous reste plus qu’à coder dans les méthodes, comme vous pourriez le faire dans un programme classique (enfin presque, nous le verrons plus loin).
Pour accéder aux méthodes de l’objet que nous venons de créer, rien de plus simple, créez une instance de l’objet par :
Set DelphiASPObj = Server.CreateObject("MaDll.NomDeLObjet")

Et voici un bout de code ASP qui permet de faire appel à votre objet

<HTML>
<BODY>
<TITLE> Premier Objet Delphi ASP </TITLE>
<HR>
<%
 Set DelphiASPObj = Server.CreateObject("MonAsp.AspPremierObjet")
     UneVariable = DelphiASPObj.MaMethode(unEntier,’uneChaine’);
      DelphiASPObj.Maproperty = 2*12
    Set DelphiASPObj = Nothing ' ne pas l'oublier
%>
<HR>
</BODY>
</HTML>


Nous voyons tout de suite qu'un des intérêts majeurs de ASP par rapport a ISAPI est la possibilité de faire appel à des méthodes et de manipuler des propriétés
Cette possibilité donne la souplesse de programmation qui manque à ISAPI, au détriment, c'est vrai de la performence, même si c'est très relatif

A ce stade, nous avons les éléments minimums indispensables.

Tutoriels   Suite


Delphicenter est un service proposé par Cotelem™. 1997-2008