Developpement:Modèle et langage -1

De Wiki1000
(Différences entre les versions)
Ligne 1 : Ligne 1 :
==Modification dans le langage.==
+
''==''Modification dans le langage.==
  
 
==Le contrôle de type.==
 
==Le contrôle de type.==
Ligne 501 : Ligne 501 :
 
Les méthodes de classe sont des méthodes portées par le type.
 
Les méthodes de classe sont des méthodes portées par le type.
  
Constructeur de classe :
+
Constructeur de classe :
  
 
<font face="courrier new">var inst2:MaClasse2; </font>
 
<font face="courrier new">var inst2:MaClasse2; </font>
Ligne 525 : Ligne 525 :
  
  
Toutefois :  
+
Toutefois :  
  
 
Dans le premier cas une erreur est déclenchée si la classe MaClasse3 n’existe pas lors de la compilation.
 
Dans le premier cas une erreur est déclenchée si la classe MaClasse3 n’existe pas lors de la compilation.
  
Dans le second cas un avertissement est déclenché si la classe « MaClasse3 » n’existe pas lors de la compilation.
+
Dans le second cas un avertissement est déclenché si la classe « MaClasse3 » n’existe pas lors de la compilation.
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Ligne 544 : Ligne 544 :
 
|<font face="courrier new">ClassManager.CreateCursor(‘ClasseName’)</font>
 
|<font face="courrier new">ClassManager.CreateCursor(‘ClasseName’)</font>
 
|-
 
|-
|<font face="courrier new">class.Find(const iWhere,iOrderBy :string ; iDescendant :boolean ; const iArgs :Array of variant]):TitObject ;</font>
+
|<font face="courrier new">class.Find(const iWhere,iOrderBy :string ; iDescendant :boolean ; const iArgs :Array of variant]):TitObject ;</font>
|<font face="courrier new">ClassManager.Find(const iClassName :string ; const iWhere,iOrderBy :string ; iDescendant :boolean ; const iArgs :Array of variant]):TitObject ;</font>
+
|<font face="courrier new">ClassManager.Find(const iClassName :string ; const iWhere,iOrderBy :string ; iDescendant :boolean ; const iArgs :Array of variant]):TitObject ;</font>
 
|-
 
|-
 
|<font face="courrier new"></font>
 
|<font face="courrier new"></font>
Ligne 553 : Ligne 553 :
  
  
Exemples :
+
Exemples :
  
 
<font face="courrier new">var x: TMaClasseP1; </font>
 
<font face="courrier new">var x: TMaClasseP1; </font>
Ligne 599 : Ligne 599 :
 
Les opérateurs de classes opèrent sur des instances de classe.  
 
Les opérateurs de classes opèrent sur des instances de classe.  
  
===Opérateur « is » ===
+
===Opérateur « is » ===
  
 
IS réalise un test d’héritage d’une instance par rapport à une classe.
 
IS réalise un test d’héritage d’une instance par rapport à une classe.
  
===Opérateur « as »===
+
===Opérateur « as »===
  
 
AS réalise un transtypage de type d’une instance de classe vers une autre, la validé du transtypage est contrôlé lors de l’exécution.
 
AS réalise un transtypage de type d’une instance de classe vers une autre, la validé du transtypage est contrôlé lors de l’exécution.
Ligne 649 : Ligne 649 :
 
Un tableau ouvert est toujours passé par adresse.
 
Un tableau ouvert est toujours passé par adresse.
  
Il existe cependant des limitations sur l’usage des tableaux ouverts :
+
Il existe cependant des limitations sur l’usage des tableaux ouverts :
  
Leur dimension doit être un ; les tableaux ouverts multi-dimension ne sont pas supportés.
+
Leur dimension doit être un ; les tableaux ouverts multi-dimension ne sont pas supportés.
  
Ils ne peuvent contenir que des types simples ; les types objets ne peuvent pas être utilisés dans des tableaux ouverts.
+
Ils ne peuvent contenir que des types simples ; les types objets ne peuvent pas être utilisés dans des tableaux ouverts.
  
 
Les indices de tableau ouvert commencent toujours à zéro.
 
Les indices de tableau ouvert commencent toujours à zéro.
  
===Pour définir une variable locale de type tableau ouvert :===
+
===Pour définir une variable locale de type tableau ouvert :===
  
 
<font face="courrier new">var v:Array of string; s:string; idx:Integer;</font>
 
<font face="courrier new">var v:Array of string; s:string; idx:Integer;</font>
Ligne 681 : Ligne 681 :
 
<font face="courrier new">  Result := FALSE;</font>
 
<font face="courrier new">  Result := FALSE;</font>
  
<font face="courrier new">end ;</font>
+
<font face="courrier new">end ;</font>
  
 
<font face="courrier new"></font>
 
<font face="courrier new"></font>
Ligne 687 : Ligne 687 :
 
===Utilisation des tableaux ouverts dans les paramètres de méthode.===
 
===Utilisation des tableaux ouverts dans les paramètres de méthode.===
  
Il est possible de définir des paramètres de méthode sous forme de tableau ouvert ; par exemple :
+
Il est possible de définir des paramètres de méthode sous forme de tableau ouvert ; par exemple :
  
 
<font face="courrier new">function MethodName(p2:Array of string):string;</font>
 
<font face="courrier new">function MethodName(p2:Array of string):string;</font>
Ligne 715 : Ligne 715 :
 
<font face="courrier new"></font>
 
<font face="courrier new"></font>
  
Pour appeler une méthode ayant des paramètres ouverts à partir d’un tableau constant:  
+
Pour appeler une méthode ayant des paramètres ouverts à partir d’un tableau constant:  
  
 
<font face="courrier new">var s:string; </font>
 
<font face="courrier new">var s:string; </font>
Ligne 729 : Ligne 729 :
 
<font face="courrier new"></font>
 
<font face="courrier new"></font>
  
Pour appeler une méthode ayant des paramètres ouverts à partir d’une variable locale de type tableau statique :  
+
Pour appeler une méthode ayant des paramètres ouverts à partir d’une variable locale de type tableau statique :  
  
 
<font face="courrier new">var s:string; v:Array[0..2] of string;</font>
 
<font face="courrier new">var s:string; v:Array[0..2] of string;</font>
Ligne 751 : Ligne 751 :
 
Rappelez-vous que les tableaux statiques sont passés par valeurs, la méthode ne peut pas modifier le contenu du tableau.
 
Rappelez-vous que les tableaux statiques sont passés par valeurs, la méthode ne peut pas modifier le contenu du tableau.
  
Pour appeler une méthode ayant des paramètres ouverts à partir d’une variable locale de type tableau ouvert :  
+
Pour appeler une méthode ayant des paramètres ouverts à partir d’une variable locale de type tableau ouvert :  
  
 
<font face="courrier new">var s:string; v:Array of string;</font>
 
<font face="courrier new">var s:string; v:Array of string;</font>
Ligne 773 : Ligne 773 :
 
Rappelez-vous que les tableaux ouverts sont passés par adresse, la méthode peut modifier le contenu du tableau.
 
Rappelez-vous que les tableaux ouverts sont passés par adresse, la méthode peut modifier le contenu du tableau.
  
A l’intérieur de la méthode il est possible d’affecter des valeurs aux tableaux :
+
A l’intérieur de la méthode il est possible d’affecter des valeurs aux tableaux :
  
 
<font face="courrier new">function MethodName(p2:Array of string):string;</font>
 
<font face="courrier new">function MethodName(p2:Array of string):string;</font>
Ligne 783 : Ligne 783 :
 
<font face="courrier new">  Result := ''; stag := '';</font>
 
<font face="courrier new">  Result := ''; stag := '';</font>
  
<font face="courrier new">  p2[length(p2)] := !;</font>
+
<font face="courrier new">  p2[length(p2)] := ‘ !’ ;</font>
  
 
<font face="courrier new">  for idx:=0 to length(p2)-1 do</font>
 
<font face="courrier new">  for idx:=0 to length(p2)-1 do</font>
Ligne 805 : Ligne 805 :
 
L’agrandissement des tableaux ouverts est automatique, toutefois si vous ajoutez une grande quantité d’éléments à un tableau ouvert vous avez intérêt à utilisez la fonction setLength(tableau,taille) pour agrandir en une fois le tableau.
 
L’agrandissement des tableaux ouverts est automatique, toutefois si vous ajoutez une grande quantité d’éléments à un tableau ouvert vous avez intérêt à utilisez la fonction setLength(tableau,taille) pour agrandir en une fois le tableau.
  
Les éléments non affectés d’un tableau ouvert sont non défini, par exemple :
+
Les éléments non affectés d’un tableau ouvert sont non défini, par exemple :
  
 
<font face="courrier new">var v:Array of string; s:string; idx:Integer;</font>
 
<font face="courrier new">var v:Array of string; s:string; idx:Integer;</font>
Ligne 829 : Ligne 829 :
 
<font face="courrier new">  Result := FALSE;</font>
 
<font face="courrier new">  Result := FALSE;</font>
  
<font face="courrier new">end ;</font>
+
<font face="courrier new">end ;</font>
  
  
Ligne 837 : Ligne 837 :
 
===Fonctions associés aux tableaux ouverts===
 
===Fonctions associés aux tableaux ouverts===
  
Sur un paramètre tableau ouvert les fonctions suivantes sont utilisables :  
+
Sur un paramètre tableau ouvert les fonctions suivantes sont utilisables :  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Ligne 844 : Ligne 844 :
 
|Exemple
 
|Exemple
 
|-
 
|-
|<font face="courrier new">function length(x) :Integer</font>
+
|<font face="courrier new">function length(x) :Integer</font>
 
|Retourne le nombre d’éléments du tableau
 
|Retourne le nombre d’éléments du tableau
 
|<font face="courrier new">if length(p)=3 then</font>
 
|<font face="courrier new">if length(p)=3 then</font>
Ligne 854 : Ligne 854 :
 
<font face="courrier new">  // tableau</font>
 
<font face="courrier new">  // tableau</font>
  
<font face="courrier new"> end ;</font>
+
<font face="courrier new"> end ;</font>
 
|-
 
|-
|<font face="courrier new">procedure setlength(x ;l :integer)</font>
+
|<font face="courrier new">procedure setlength(;:integer)</font>
 
|Ajuste la taille du tableau
 
|Ajuste la taille du tableau
 
|<font face="courrier new">// Positionne la taille du </font>
 
|<font face="courrier new">// Positionne la taille du </font>
Ligne 862 : Ligne 862 :
 
<font face="courrier new">// tableau à 10 éléments.</font>
 
<font face="courrier new">// tableau à 10 éléments.</font>
  
<font face="courrier new">setLength(x,10) ;</font>
+
<font face="courrier new">setLength(x,10) ;</font>
 
|}
 
|}
  
Ligne 873 : Ligne 873 :
 
Le support de MapiExt a été ajouté pour permettre l’envoi de mail à partir du code métier sans ouvrir de message d’avertissement.
 
Le support de MapiExt a été ajouté pour permettre l’envoi de mail à partir du code métier sans ouvrir de message d’avertissement.
  
<font face="courrier new">Procedure MailTo(const iDestinataire, iSubject, iBody : string);</font>
+
<font face="courrier new">Procedure MailTo(const iDestinataire, iSubject, iBody : string);</font>
  
 
==TBinaryContent==
 
==TBinaryContent==
Ligne 879 : Ligne 879 :
 
Le type TBinaryContent permet de manipuler des données binaires chargé à partir de fichier ou de chaîne encodées en base64.
 
Le type TBinaryContent permet de manipuler des données binaires chargé à partir de fichier ou de chaîne encodées en base64.
  
Les propriétés suivantes sont disponibles sur les types binaires :  
+
Les propriétés suivantes sont disponibles sur les types binaires :  
  
 
AsBase64Binary
 
AsBase64Binary
Ligne 897 : Ligne 897 :
 
=='''  Tb64Compression = (b64Auto, b64ZlibSig, b64ZlibNoSig, b64None);'''==
 
=='''  Tb64Compression = (b64Auto, b64ZlibSig, b64ZlibNoSig, b64None);'''==
  
<font face="courrier new">Function getAsBase64Binary(iCompression:Tb64Compression) :string ;</font>
+
<font face="courrier new">Function getAsBase64Binary(iCompression:Tb64Compression) :string ;</font>
  
 
<font face="courrier new">Procedure setAsBase64Binary(const value:string; iCompression:Tb64Compression);</font>
 
<font face="courrier new">Procedure setAsBase64Binary(const value:string; iCompression:Tb64Compression);</font>
Ligne 907 : Ligne 907 :
 
==TStringList==
 
==TStringList==
  
Les propriétés suivantes sont disponibles sur les types binaires :  
+
Les propriétés suivantes sont disponibles sur les types binaires :  
  
 
AsBase64Binary
 
AsBase64Binary
Ligne 917 : Ligne 917 :
 
=='''  ''''''Tb64Compression = (b64Auto, b64ZlibSig, b64ZlibNoSig, b64None);'''==
 
=='''  ''''''Tb64Compression = (b64Auto, b64ZlibSig, b64ZlibNoSig, b64None);'''==
  
<font face="courrier new">Function getAsBase64Binary(iCompression:Tb64Compression) :string ;</font>
+
<font face="courrier new">Function getAsBase64Binary(iCompression:Tb64Compression) :string ;</font>
  
 
<font face="courrier new">Procedure setAsBase64Binary(const value:string; iCompression:Tb64Compression);</font>
 
<font face="courrier new">Procedure setAsBase64Binary(const value:string; iCompression:Tb64Compression);</font>
Ligne 925 : Ligne 925 :
 
Ce type a été amélioré de nouvelles méthodes et propriétés.
 
Ce type a été amélioré de nouvelles méthodes et propriétés.
  
Compression :
+
Compression :
  
 
<font face="courrier new">var xml:TxmlDocument; aString:string;</font>
 
<font face="courrier new">var xml:TxmlDocument; aString:string;</font>
Ligne 947 : Ligne 947 :
 
Un composant TxslDocument pouvant contenir une feuille de style XSL et appliquer une transformation à un document source XML. Le résultat d’une transformation XSL peut être un autre document XML, un document HTML ou bien un document texte.
 
Un composant TxslDocument pouvant contenir une feuille de style XSL et appliquer une transformation à un document source XML. Le résultat d’une transformation XSL peut être un autre document XML, un document HTML ou bien un document texte.
  
Les méthodes disponibles sur un TxslDocument :  
+
Les méthodes disponibles sur un TxslDocument :  
  
<font face="courrier new">Procedure TransformToXML(const source : TxmlDocument; dest :TxmlDocument) ;</font>
+
<font face="courrier new">Procedure TransformToXML(const source : TxmlDocument; dest :TxmlDocument) ;</font>
  
 
Applique la transformation pour produire un nouveau document XML. La feuille de style doit être de type xMethodXML ou xMethodHtml
 
Applique la transformation pour produire un nouveau document XML. La feuille de style doit être de type xMethodXML ou xMethodHtml
Ligne 955 : Ligne 955 :
 
<font face="courrier new"></font>
 
<font face="courrier new"></font>
  
<font face="courrier new">Procedure TransformToStream(const source : TxmlDocument; dest :TStream) ;</font>
+
<font face="courrier new">Procedure TransformToStream(const source : TxmlDocument; dest :TStream) ;</font>
  
 
Applique la transformation pour produire un nouveau document XML. La feuille de style doit être du type xMethodText
 
Applique la transformation pour produire un nouveau document XML. La feuille de style doit être du type xMethodText
Ligne 961 : Ligne 961 :
 
<font face="courrier new"></font>
 
<font face="courrier new"></font>
  
<font face="courrier new">Function TransformToString(const source : TxmlDocument) :string ;</font>
+
<font face="courrier new">Function TransformToString(const source : TxmlDocument) :string ;</font>
  
Applique la transformation et retourne le résultat comme chaîne de caractère. La feuille de style peut être de tout type ; si le résultat est un document XML c’est sa représentation en chaîne de caractère qui est retournée.
+
Applique la transformation et retourne le résultat comme chaîne de caractère. La feuille de style peut être de tout type ; si le résultat est un document XML c’est sa représentation en chaîne de caractère qui est retournée.
  
  

Version du 13 mai 2008 à 11:43

==Modification dans le langage.==

Sommaire

Le contrôle de type.

Le contrôle de type a été ajouté au langage pour permettre un contrôle plus rigoureux du code source. Il devient ainsi possible de détecter certaine erreur lors de la compilation.

Toutefois pour rester compatible avec le code existant les erreurs signalées par le contrôle de type sont des avertissements.

Les types de données

Type Alias de Forme générique Post fixe Remarques
string
normalizedString string soap
anyURI string soap
tokenString string soap
byte
char Type ordinal
integer
int integer soap
unsigned integer soap
short integer soap
unsignedShort integer soap
long integer soap
unsignedLong integer soap
longint longint Type entier long
double
float double soap
currency soap as decimal
decimal currency soap
TDatetime soap as datetime
date
time
boolean
variant Type générique
base64Binary Type binaire soap
hexBinary Type binaire soap
Enumération
TObject Classes techniques
TStringList
TQuery
TDeleteObjectList
TDateBaseInfo
TBinaryContent
Objet métier TitObject Classes de base des stéréotypes
TdbObject
TObjectNode
List de d’objets métiers TObjectList LIST
Curseur d’objet métier TdbCursor CURSOR
Type de données du framework
TEnum
TNumeric
TQuantity
TQuantityWithRef
TQuotation
TMoney
TMoneyDT
TSCurrency
TSDouble
TSInteger
TSQuantity
TCounter
TFlag
TIdentity
TSQLIdentity
TDateList
TIntegerList
TController
TMemo
TBinary
TPicture

TxmlDataType

TxslDataType





Paramétrage des messages du compilateur

Les messages d’avertissement du contrôle de type peuvent être désactivé ou transformé en message d’erreur.

image2.png


image3.png

Les opérateurs et les méthodes de classe.

Les méthodes de classe.

Les méthodes de classe sont des méthodes portées par le type.

Constructeur de classe :

var inst2:MaClasse2;

begin

inst2 := MaClasse3.Create;

end;

Cette syntaxe est équivalent à

var inst2:MaClasse2;

begin

inst2 := ClassManager.CreateInstance(‘MaClasse3’);

end;


Toutefois :

Dans le premier cas une erreur est déclenchée si la classe MaClasse3 n’existe pas lors de la compilation.

Dans le second cas un avertissement est déclenché si la classe « MaClasse3 » n’existe pas lors de la compilation.

Méthode de classe Equivalence
Class.Create ClassManager.CreateInstance(‘ClasseName’)
Class.CreateList ClassManager.CreateObjectList(‘ClasseName’)
Class.CreateCursor ClassManager.CreateCursor(‘ClasseName’)
class.Find(const iWhere,iOrderBy :string ; iDescendant :boolean ; const iArgs :Array of variant]):TitObject ; ClassManager.Find(const iClassName :string ; const iWhere,iOrderBy :string ; iDescendant :boolean ; const iArgs :Array of variant]):TitObject ;


Exemples :

var x: TMaClasseP1;

begin

ShowMessage(TMaClasseP1.Find('uneChaine=%1',,FALSE,['Code1']).uneChaine);

//

x := TMaClasseP1.Find('uneChaine=%1',,FALSE,['Code2']);

if Assigned(x) then showMessage('ok') else showMessage('failed');

end;

var vcursor:TCursor;

begin

vCursor := TMaClasseP1.CreateCursor;

vcursor.Open;

while not vcursor.EOI do

begin

showMessage(vCursor.Instance.uneChaine);

vcursor.Next;

end;

vcursor.Close;

end;


Les opérateurs de classe.

Les opérateurs de classes opèrent sur des instances de classe.

Opérateur « is » 

IS réalise un test d’héritage d’une instance par rapport à une classe.

Opérateur « as »

AS réalise un transtypage de type d’une instance de classe vers une autre, la validé du transtypage est contrôlé lors de l’exécution.

var inst2:MaClasse2; inst3:MaClasse3;

begin

inst2 := MaClasse3.Create;

if inst2 is MaClasse3 then

begin

inst3 := (inst2 as MaClasse3);

inst3.code3 := 'code3';

showMessage(inst3.code3);

showmessage((inst2 as MaClasse3).code3);

end

else showMessage('Is is FALSE');

end;

Tableaux ouverts

Les tableaux ouverts à une dimension sont supportés dans les variables locales et les paramètres de méthode.

Différences entre tableaux ouverts et tableaux statiques.

Un tableau statique réserve autant de place qu’il comporte d’éléments dans la pile d’exécution.

Un tableau statique peut être multi-dimensions.

Un tableau statique est toujours passé par valeurs.

Un tableau ouvert ne réserve qu’une entrée dans la pile d’exécution, cette entrée référençant un tableau d’éléments agrandit au fur et à mesure des affectations.

Un tableau ouvert ne peut être que mono-dimension.

Un tableau ouvert est toujours passé par adresse.

Il existe cependant des limitations sur l’usage des tableaux ouverts :

Leur dimension doit être un ; les tableaux ouverts multi-dimension ne sont pas supportés.

Ils ne peuvent contenir que des types simples ; les types objets ne peuvent pas être utilisés dans des tableaux ouverts.

Les indices de tableau ouvert commencent toujours à zéro.

Pour définir une variable locale de type tableau ouvert :

var v:Array of string; s:string; idx:Integer;

begin

v[0] := 'A';

v[1] := 'B';

//

s := ;

for idx:=0 to length(v)-1 do

s := s+v[idx];

//

showMessage(s);

Result := FALSE;

end ;

Utilisation des tableaux ouverts dans les paramètres de méthode.

Il est possible de définir des paramètres de méthode sous forme de tableau ouvert ; par exemple :

function MethodName(p2:Array of string):string;

var idx:Integer; stag:string;

begin

Result := ; stag := ;

for idx:=0 to length(p2)-1 do

begin

Result := Result+stag+p2[idx];

stag := ' ';

end;

end;


Un paramètre ouvert peut être appelé à partir d’un tableau constant, d’une variable locale de type tableau statique ou d’une variable locale de type tableau ouvert.

Pour appeler une méthode ayant des paramètres ouverts à partir d’un tableau constant:

var s:string;

begin

s := MethodName(['ah','que','coucou']);

showmessage(s);

end;

Pour appeler une méthode ayant des paramètres ouverts à partir d’une variable locale de type tableau statique :

var s:string; v:Array[0..2] of string;

begin

v[0] := 'ah';

v[1] := 'que';

v[2] := 'coucou';

s := MethodName(v);

showmessage(s);

end;

Rappelez-vous que les tableaux statiques sont passés par valeurs, la méthode ne peut pas modifier le contenu du tableau.

Pour appeler une méthode ayant des paramètres ouverts à partir d’une variable locale de type tableau ouvert :

var s:string; v:Array of string;

begin

v[0] := 'ah';

v[1] := 'que';

v[2] := 'coucou';

s := MethodName(v);

showmessage(s);

end;

Rappelez-vous que les tableaux ouverts sont passés par adresse, la méthode peut modifier le contenu du tableau.

A l’intérieur de la méthode il est possible d’affecter des valeurs aux tableaux :

function MethodName(p2:Array of string):string;

var idx:Integer; stag:string;

begin

Result := ; stag := ;

p2[length(p2)] := ‘ !’ ;

for idx:=0 to length(p2)-1 do

begin

Result := Result+stag+p2[idx];

stag := ' ';

end;

end;

Si l’indice d’affectation est supérieur à la taille du tableau celui-ci est agrandit et ses valeurs courantes sont conservées.

Dimensionnement des tableaux ouverts

L’agrandissement des tableaux ouverts est automatique, toutefois si vous ajoutez une grande quantité d’éléments à un tableau ouvert vous avez intérêt à utilisez la fonction setLength(tableau,taille) pour agrandir en une fois le tableau.

Les éléments non affectés d’un tableau ouvert sont non défini, par exemple :

var v:Array of string; s:string; idx:Integer;

begin

v[0] := 'A'; // initialise le tableau

v[2] := 'B'; // agrandi le tableau à 3 élements

//

s := ;

for idx:=0 to length(v)-1 do

s := s+v[idx];

//

showMessage(s);

Result := FALSE;

end ;


Provoquera une erreur car l’élément d’indice 1 du tableau est non défini.

Fonctions associés aux tableaux ouverts

Sur un paramètre tableau ouvert les fonctions suivantes sont utilisables :

fonction Description Exemple
function length(x) :Integer Retourne le nombre d’éléments du tableau if length(p)=3 then

begin

// 3 éléments de 0..2 dans le

// tableau

end ;

procedure setlength(x ;l :integer) Ajuste la taille du tableau // Positionne la taille du

// tableau à 10 éléments.

setLength(x,10) ;


Les nouveaux objets techniques.

Envoi de Mail

Le support de MapiExt a été ajouté pour permettre l’envoi de mail à partir du code métier sans ouvrir de message d’avertissement.

Procedure MailTo(const iDestinataire, iSubject, iBody : string);

TBinaryContent

Le type TBinaryContent permet de manipuler des données binaires chargé à partir de fichier ou de chaîne encodées en base64.

Les propriétés suivantes sont disponibles sur les types binaires :

AsBase64Binary

Lecture ou écriture des données encodées au format base64.

AsString

Lecture ou écriture des données contenues dans une chaine de caractère.

Hash

Retourne une chaine de caractère correspondant au sceau du contenu. Le sceau du contenu est le résultat en format hexadécimale (16 caractères) d’une compression du contenu par une clé DES.

Les fonctions suivantes sont disponibles

Tb64Compression = (b64Auto, b64ZlibSig, b64ZlibNoSig, b64None);

Function getAsBase64Binary(iCompression:Tb64Compression) :string ;

Procedure setAsBase64Binary(const value:string; iCompression:Tb64Compression);

Lecture et écriture des données en contrôlant le mode de compression

TStringList

Les propriétés suivantes sont disponibles sur les types binaires :

AsBase64Binary

Lecture ou écriture des données encodées au format base64.

Les fonctions suivantes sont disponibles

' 'Tb64Compression = (b64Auto, b64ZlibSig, b64ZlibNoSig, b64None);

Function getAsBase64Binary(iCompression:Tb64Compression) :string ;

Procedure setAsBase64Binary(const value:string; iCompression:Tb64Compression);

TxmlDocument

Ce type a été amélioré de nouvelles méthodes et propriétés.

Compression :

var xml:TxmlDocument; aString:string;

begin

xml := TxmlDocument.Create(nil);

//...

xml.Compression := cpxZLibNoSig;

xml.isCompressed := TRUE;

aString := xml.SaveToBase64;

end;

TxslDocument

Un composant TxslDocument pouvant contenir une feuille de style XSL et appliquer une transformation à un document source XML. Le résultat d’une transformation XSL peut être un autre document XML, un document HTML ou bien un document texte.

Les méthodes disponibles sur un TxslDocument :

Procedure TransformToXML(const source : TxmlDocument; dest :TxmlDocument) ;

Applique la transformation pour produire un nouveau document XML. La feuille de style doit être de type xMethodXML ou xMethodHtml

Procedure TransformToStream(const source : TxmlDocument; dest :TStream) ;

Applique la transformation pour produire un nouveau document XML. La feuille de style doit être du type xMethodText

Function TransformToString(const source : TxmlDocument) :string ;

Applique la transformation et retourne le résultat comme chaîne de caractère. La feuille de style peut être de tout type ; si le résultat est un document XML c’est sa représentation en chaîne de caractère qui est retournée.

Outils personnels