FAQ Delphi .NET
FAQ Delphi .NETConsultez toutes les FAQ
Nombre d'auteurs : 15, nombre de questions : 54, dernière mise à jour : 16 juin 2021
Pour ce faire on redéclare l'attribut DebuggableAttribute :
La propriété IsJITOptimizerDisabled : Indique si l'optimiseur du runtime est désactivé.
* La valeur True augmente les performances d'exécution pour le debugger, ce qui peut diminuer les performances d'exécution de l'application.
* La valeur False augmente les performances d'exécution de l'application.
Propriété IsJITTrackingEnabled : Indique si le runtime récupére, pendant la génération de code, des informations pour le debugger.
Cette propriété ne commande pas le debugger, mais informe le compilateur (JIT) de produire des informations utilisable par le débugger.
[assembly: Debuggable(False
, False
)]
Sous Delphi 2005, cet attribut est positionné par défaut à
[assembly: Debuggable(True
, False
)]
Code d'exemple :
// Aucune information de debbugage
{$A-,B-,C+,D-,E-,F-,G+,H+,I+,J-,K-,L-,M-,N+,O+,P+,Q+,R+,S-,T-,U-,V+,W-,X+,Y-,Z1}
{
C+ = Directives d'assertion
D+ = Informations de débogage
Y+ = Déclaration de symboles et informations de référence croisée.
}
program
DebugAttribut;
{$APPTYPE CONSOLE}
uses
SysUtils,
System.Diagnostics;
[assembly : Debuggable(False
, False
)]
function
QueryPerformanceCounter(out
lpPerformanceCount: Int64):LongBool
; external
'kernel32.dll'
;
var
StartCount, EndCount: Int64;
i, j, k: Integer
;
begin
QueryPerformanceCounter(StartCount);
i := 0
;
while
i < 1000000
do
begin
k := ((i*2
)+2
);
i := k div
2
;
dec(i);
j := i;
inc(j);
i := j;
end
;
QueryPerformanceCounter(EndCount);
Writeln(Convert.ToString(EndCount-StartCount));
Readln;
end
.
L'utilisation du menu Outils permet ce type d'intégration, l'utilisation du script console suivant permet l'appel de l'utilitaire sn.exe :
@echo off
rem Fichier MakeSN.cmd
rem Crée un nom fort pour un assembly en utilisant le nom du fichier projet en cours
rem Lignes à insérer dans le menu Outils :
rem Titre : Strong Name
rem Programme : C:\WINDOWS\system32\cmd.exe
rem Répertoire : C:\WINDOWS\system32
rem Paramètres : /K "VotrePath\MakeSN.cmd" $Exename
rem Modifier le nom de répertoire.
rem Dans le batch %1 correspond à $Exename
rem %NetSamplePath% pointe sur le chemin du SDK .NET, utilisez Call Sdkvars.cmd (script du SDK .NET)
rem Il est préférable de déclarer la variable d'environnement
rem %NetSamplePath% dans la fenêtre variable d'environnement de l'onglet Avancé des propriétés Système.
For /F "tokens=*" %%I in ('Echo %1') do "%NetSamplePath%Bin\sn.exe" -k "%%~dpnI.snk"
if errorlevel 1 goto Erreur
if errorlevel 0 goto Fin
:Erreur
Echo.
rem génération en OEM
Title Erreur de g,n,ration de nom fort.
Echo Erreur de g,n,ration de nom fort.
pause
:Fin
rem Termine le shell
Exit
Modifier le nom du répertoire dans la zone de saisie Paramètres.
Remarque :
Il est conseillé d'adopter une politique de signature cohérente de vos assemblages en utilisant toujours la même clé pour la signature.
Il est aussi possible de créer un modéle d'unité dédiée qui renseigne les attributs suivant :
...
[assembly: AssemblyDelaySign(False
)]
[assembly: AssemblyKeyFile('FullPath\VotreFichierDeClé'
)]
[assembly: AssemblyKeyName('votreClé'
)]
...
Voir le fichier template :
C:\Program Files\Borland\BDS\3.0\Objrepos\DelphiDotNet\AssemblyInfoTemplate.pas
Le WebService BabelCode est un outil en version Beta qui permet de convertir du code C# vers Delphi.Net.
Il ne peut être utilisé sous l'édition Personnel de Delphi 2005 parce que celles-ci ne permettent pas l'ajout de références Web.
Nous allons utiliser deux RichTextBox : un pour afficher le code C# et un autre pour afficher le code Delphi.Net correspondant après conversion. Un bouton sera également ajouté sur la fiche pour lancer l'opération.
Mais avant cela, il faut ajouter la référence au WebService.
Pour le faire, aller dans le menu Project-Add Web reference et ajouter le lien vers la description du service.
Utilisez ensuite l'option Add Reference pour charger le convertisseur.
Il ne vous reste plus qu'à implémenter les fonctions pour charger le premier RichTextBox avec du code C# et sur l'évènement OnClick du bouton, saisissez :
procedure
TWinForm.btnConvert_Click(sender: System.Object
; e: System.EventArgs);
begin
rtbDelphiCode.Text := BabelCode.Create.CSharpToDelphi(rtbCSharpCode.Text);
end
;
Voilà. A noter que cette WebService est encore en version Beta et que la conversion ne sera pas forcément parfaite. Vous pouvez par ailleurs consulter cet excellent tutoriel de Laurent Dardenne sur la conversion du code C# vers Delphi .NET.
Lien : Conversion du langage C# vers Delphi 2005 pour .NET
Lien : Using the Borland WebService BabelCode
Lien : La faq C#