Developpement:Modèle et langage -1
Ligne 1 : | Ligne 1 : | ||
− | + | ==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 | + | Constructeur de classe : |
<font face="courrier new">var inst2:MaClasse2; </font> | <font face="courrier new">var inst2:MaClasse2; </font> | ||
Ligne 525 : | Ligne 525 : | ||
− | + | 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 | + | 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, | + | |<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 | + | |<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 : | |
<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 | + | ===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 | + | ===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 | + | Il existe cependant des limitations sur l’usage des tableaux ouverts : |
− | Leur dimension doit être | + | Leur dimension doit être un ; les tableaux ouverts multi-dimension ne sont pas supportés. |
− | Ils ne peuvent contenir que des types | + | 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 | + | ===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"> | + | <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 | + | 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 | + | 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 | + | 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 | + | 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 | + | 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 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 | + | 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"> | + | <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 | + | 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) | + | |<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"> | + | <font face="courrier new"> end ;</font> |
|- | |- | ||
− | |<font face="courrier new">procedure setlength( | + | |<font face="courrier new">procedure setlength(x ;l :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 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, | + | <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 | + | 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) | + | <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 | + | 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) | + | <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 : | |
<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 | + | Les méthodes disponibles sur un TxslDocument : |
− | <font face="courrier new">Procedure TransformToXML(const | + | <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 | + | <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 | + | <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 | + | 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 actuelle en date du 13 mai 2008 à 09:46
Modification dans le langage.
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.
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.