// IncludeRecenserAdditionalProcs.inc procedure TCdrPascalScript.RecenserAdditionalProcs(Sender: TPSScriptDebugger); var EWE: String; begin //if (FRecenserAdditionalProcsAlreadyCalled) then exit; //FRecenserAdditionalProcsAlreadyCalled := True; AfficherMsgErrClass(self, 'RecenserAdditionalProcs():'); //DefineTypesAndRecords(); // TODO Ici ou dans Initialise() ?; sender.AddFunction(@pass , 'procedure pass;'); sender.AddFunction(@GetGHTopoVersion , 'function GetGHTopoVersion(): string;'); sender.AddFunction(@GetGHTopoDirectory , 'function GetGHTopoDirectory(): string'); sender.AddFunction(@pass , 'procedure pass;'); sender.AddFunction(@GetGHTopoVersion , 'function GetGHTopoVersion(): string;'); sender.AddFunction(@GetGHTopoDirectory , 'function GetGHTopoDirectory(): string'); sender.AddFunction(@FileExists , 'function FileExists(const NF: string): boolean;'); sender.AddFunction(@ExtractFileExt , 'function ExtractFileExt(const FileName: string): string;'); sender.AddFunction(@ExtractFileName , 'function ExtractFileName(const FileName: string): string;'); sender.AddFunction(@GetGUID , 'function GetGUID(): string;'); sender.AddFunction(@IntegerToXLSColumn , 'function IntegerToXLSColumn(const Value: integer): string;'); sender.AddFunction(@XLSColumnToInteger , 'function XLSColumnToInteger(const Value: string): integer;'); sender.AddFunction(@RandomBetweenValuesInMeters, 'function RandomBetweenValuesInMeters(const V1, V2: double): double;'); sender.AddFunction(@Format , 'function format(Const Fmt : String; const Args : Array of const) : String;'); sender.AddFunction(@Format , 'function sprintf(Const Fmt : String; const Args : Array of const) : String;'); sender.AddFunction(@KMLColor , 'function KMLColor(const R, G, B, A: byte): string;'); sender.AddFunction(@Graphics.RGBToColor , 'function RGB(const R, G, B: byte): Longint'); sender.AddFunction(@GetColorDegrade , 'function GetColorDegrade(const z, zmin, zmax: Double; const Coul1, Coul2: LongInt): LongInt'); //sender.AddFunction(@ConversionCoordonneesIsoleesEPSG, 'function ConversionCoordonneesIsoleesEPSG(const Src, Tgt: integer; const PointInX, PointInY: double; out PointOutX, PointOutY: double): boolean;'); sender.AddFunction(@ConvertirEnNombreReel , 'function StrToFloatDef(const S: string; const Default: double): double;'); sender.AddFunction(@FormatterIDTerrainStation, 'function FormatterIDTerrainStation(const S: string): string;'); sender.AddFunction(@CalculerDeclinaisonMagnetique, 'function CalculerDeclinaisonMagnetique(const Lat, Lon, Alt: double; const YYYY, MM, DD: word): double;'); sender.AddFunction(@CalculerDeclinaisonMagnetiqueFromREST, 'function CalculerDeclinaisonMagnetiqueFromREST(const Lat, Lon, Alt: double; const YYYY, MM, DD: word): double;'); // boites de dialogue sender.AddFunction(@ShowMessage , 'procedure ShowMessage(const msg: string);'); sender.AddFunction(@ShowMessage , 'procedure MsgBox(const msg: string);'); sender.AddFunction(@GHTopoQuestionOuiNon , 'function QuestionOuiNon(const Msg: string): boolean;'); sender.AddFunction(@GHTopoInputQuery , 'function InputQuery(const ACaption, APrompt: string; var QValeur: string): boolean;'); sender.AddFunction(@GHTopoInputPasswordQuery , 'function InputPasswordQuery(const ACaption, APrompt: string; var QPWD: string): boolean;'); sender.AddFunction(@DoDialogSaveFile , 'function DialogSaveFile(const QFilter: string; const QDefaultExt: string; var QFileName: string; out idxFilter: integer): boolean;'); sender.AddFunction(@DoDialogOpenFile , 'function DialogOpenFile(const QFilter: string; const QDefaultExt: string; var QFileName: string): boolean;'); sender.AddFunction(@SelectionCouleurToporobot, 'function SelectionCouleurToporobot(const OldIdx: integer): Integer;'); sender.AddFunction(@DoDialogSelectDirectory , 'function DialogSelectDirectory(const QDialogTitle: string; var QDirectory: string): boolean;'); sender.AddFunction(@SelectColor , 'function DialogSelectColor(): string;'); // fonctions math additionnelles : certaines fonctions ne sont pas acceptées telles quelles sender.AddFunction(@tan , 'function tan(x : double) : double;'); // added by JPC sender.AddFunction(@arcsin , 'function arcsin(x : double) : double;'); // added by JPC sender.AddFunction(@arccos , 'function arccos(x : double) : double;'); // added by JPC sender.AddFunction(@farctan , 'Function arctan(x : double) : double;'); // added by JPC sender.AddFunction(@farctan2 , 'Function arctan2(y, x : double) : double;'); // added by JPC sender.AddFunction(@sinh , 'Function sinh(x : double) : double;'); // added by JPC sender.AddFunction(@cosh , 'Function cosh(x : double) : double;'); // added by JPC sender.AddFunction(@tanh , 'Function tanh(x : double) : double;'); // added by JPC sender.AddFunction(@fexp , 'function exp(x : double) : double;'); sender.AddFunction(@fln , 'function ln(x : double) : double;'); sender.AddFunction(@flog , 'function log(x : double) : double;'); {$IFNDEF RASPBERRY_PI} // FPC pour ARM ne propose pas ces fonctions sender.AddFunction(@floor64 , 'function floor(x : double) : Int64;'); sender.AddFunction(@ceil64 , 'function ceil(x : double) : Int64;'); {$ENDIF} sender.AddFunction(@fabs , 'function fabs(x : double) : double;'); sender.AddFunction(@power , 'function power(const X, Y: double): double;'); sender.AddFunction(@power , 'function pow(const X, Y: double): double;'); sender.AddFunction(@radtodeg , 'function radtodeg(x : double) : double;'); sender.AddFunction(@degtorad , 'function degtorad(x : double) : double;'); sender.AddFunction(@radtograd , 'function radtograd(x : double) : double;'); sender.AddFunction(@gradtorad , 'function gradtorad(x : double) : double;'); sender.AddFunction(@degtograd , 'function degtograd(x : double) : double;'); sender.AddFunction(@gradtodeg , 'function gradtodeg(x : double) : double;'); sender.AddFunction(@DegMinSec2DegDec , 'function DegMinSec2DegDec(const S: string): double;'); // trigo en degrés sender.AddFunction(@sind , 'function sind(x : double) : double;'); sender.AddFunction(@cosd , 'function cosd(x : double) : double;'); sender.AddFunction(@tand , 'function tand(x : double) : double;'); // trigo en grades sender.AddFunction(@sing , 'function sing(x : double) : double;'); sender.AddFunction(@cosg , 'function cosg(x : double) : double;'); sender.AddFunction(@tang , 'function tang(x : double) : double;'); sender.AddFunction(@Now , 'function Now(): double;'); sender.AddFunction(@Now , 'function Maintenant(): double;'); sender.addfunction(@LLANFAIR_PG , 'function llanfairpg(): string;'); //sender.AddFunction(@DateTimePascalToDateTimeSQL , 'function DateTimePascalToDateTimeSQL(const MyDate: double): string;'); //sender.AddFunction(@DateTimeSQLToDateTimePascal , 'function DateTimeSQLToDateTimePascal(const MyDateSQL: string): double;'); sender.AddFunction(@ConvertirEnNombreReel , 'function ConvertirEnNombreReel(const S: string; const Default: Extended): Extended'); sender.AddFunction(@FormatterNombreOOo , 'function FormatterNombreOOo(const Value: Double; const NbDecs: integer; const IgnoreNulls: boolean): string;'); sender.AddFunction(@Hypot2D , 'function Hypot2D(const DX, DY: Double): Double;'); sender.AddFunction(@Hypot3D , 'function Hypot3D(const DX, DY, DZ: Double): Double;'); sender.AddFunction(@GetAzimut , 'function GetAzimut(const dx, dy: double; const Unite: double): double;'); sender.AddFunction(@ConvertirEnFiltreSeries , 'function ConvertirEnFiltreSeries(const S: string): string;'); // pour matching dans les recherches -- TODO: Support des Expressions régulières sender.AddFunction(@CalcDistanceJaroWinkler , 'function CalcDistanceJaroWinkler(const S1, S2: string): double;'); sender.AddFunction(@CalcDistanceDamerauLevenshtein, 'function CalcDistanceDamerauLevenshtein(const S1, S2: string): integer;'); sender.AddFunction(@InStr , 'function InStr(const Str, FindWhat: string; const CaseSensitive: boolean): integer;'); sender.AddFunction(@ContainsSubStr , 'function ContainsSubStr(const Str, FindWhat: string; const CaseSensitive: boolean): boolean;'); // résolution d'équations sender.AddFunction(@SolveEquationDegre1, 'function SolveEquationDegre1(const a, b: double; out X1: double): boolean;'); sender.AddFunction(@SolveEquationDegre2, 'function SolveEquationDegre2(const a, b, c: double; out X1, X2: double): boolean;'); sender.AddFunction(@SolveEquationDegre3, 'function SolveEquationDegre3(const a, b, c, d: double; out X1, X2, X3: double; out Delta: double): boolean;'); // Transmission des gisements sender.AddFunction(@TransmissionGisement, 'function TransmissionGisement(const QGisementPrecedent, QLectureArriere, QLectureAvant: double; const QUnite: double): double;'); // EPSG sender.AddMethod(self, @TCdrPascalScript.DOCTOPO_GetCurrentEPSG , 'function DOCTOPO_GetCurrentEPSG(): integer;'); // pour extraction d'altitudes IGN (service Web) sender.AddFunction(@GetAltitudeByWebServiceIGN , 'function GetAltitudeByWebServiceIGN(const QLat, QLon: double; out QAltitude, QAccuracy: double): integer;'); sender.AddFunction(@GetAltitudeByWebServiceOSM , 'function GetAltitudeByWebServiceOSM(const QLat, QLon: double; out QAltitude, QAccuracy: double): integer;'); sender.AddMethod(self, @TCdrPascalScript.REST_BeginExtractAltitudes, 'function REST_BeginExtractAltitudes(const IdxAltiRESTServer, IdxAltiDataSRC: integer): boolean;'); sender.AddMethod(self, @TCdrPascalScript.REST_AddPointByLatLonAlt , 'procedure REST_AddPointByLatLonAlt(const QLat, QLon, QAlt: double);'); sender.AddMethod(self, @TCdrPascalScript.REST_AddPointByXYZ , 'procedure REST_AddPointByXYZ(const QX, QY, QZ: double; const CodeEPSG: integer);'); sender.AddMethod(self, @TCdrPascalScript.REST_Flush , 'function REST_Flush(): integer;'); sender.AddMethod(self, @TCdrPascalScript.REST_EndExtractAltitudes , 'procedure REST_EndExtractAltitudes();'); sender.AddMethod(self, @TCdrPascalScript.REST_GetPointLatLonAltAcc , 'function REST_GetPointLatLonAltAcc(const idx: integer; out QLat, QLon, QAlt, QAcc, QTagFloat: double; out QTag: string): boolean;'); sender.AddMethod(self, @TCdrPascalScript.REST_GetNbPointsExtraits , 'function REST_GetNbPointsExtraits(): integer;'); sender.AddMethod(self, @TCdrPascalScript.REST_GetPointXYZAcc , 'function REST_GetPointXYZAcc(const idx: integer; const CodeEPSG: integer; out QX, QY, QZ, QAcc, QTagFloat: double; out QTag: string): boolean;'); sender.AddMethod(self, @TCdrPascalScript.REST_ExtractProfilAltimetrique, 'function REST_ExtractProfilAltimetrique(const Lat1, Lon1, Lat2, Lon2: double; const Sampling: integer): boolean;'); //sender.AddMethod(self, @ , ''); //sender.AddMethod(self, @ , ''); // infos système (mémoire, proc, HDD, etc ...); sender.AddMethod(self, @TCdrPascalScript.DisplaySystemInfos, 'procedure DisplaySystemInfos();'); // évaluation d'expressions sender.AddMethod(self, @TCdrPascalScript.EvalExpr , 'function Eval(const Expr: string; const B: boolean; const nZ: double): double;'); // //'function Eval(const Expr: string): double;'); // ces fonctions utilisent des variables privées de TCdrPascalScript; sender.AddMethod(self, @TCdrPascalScript.DispPSOutput, 'procedure print(const Msg: string);'); sender.AddMethod(self, @TCdrPascalScript.DispPSOutput, 'procedure WriteLn(const Msg: string);'); sender.AddMethod(self, @TCdrPascalScript.DispPSOutput, 'procedure cout(const Msg: string);'); sender.AddMethod(self, @TCdrPascalScript.DispPSErrOutput, 'procedure printErr(const Msg: string);'); sender.AddMethod(self, @TCdrPascalScript.printf , 'procedure printf(const Fmt : String; const Args : Array of const): String;'); sender.AddMethod(self, @TCdrPascalScript.printfErr , 'procedure printfErr(const Fmt : String; const Args : Array of const): String;'); sender.AddMethod(self, @TCdrPascalScript.feof , 'function feof(const Descr: integer): boolean;'); sender.AddMethod(self, @TCdrPascalScript.fopen , 'function fopen(const Descr: integer; const QFileName: string; const Mode: Char): boolean;'); sender.AddMethod(self, @TCdrPascalScript.fprint , 'procedure fwriteln(const Descr: integer; const QLine: string);'); sender.AddMethod(self, @TCdrPascalScript.fprintf , 'procedure fprintf(const Descr: integer; const FMT: string; const Args: array of const);'); sender.AddMethod(self, @TCdrPascalScript.freadln , 'function freadln(const Descr: integer): string;'); sender.AddMethod(self, @TCdrPascalScript.fclose , 'procedure fclose(const Descr: integer)'); sender.AddMethod(self, @TCdrPascalScript.fcloseall , 'procedure fcloseall()'); sender.AddMethod(self, @TCdrPascalScript.cls , 'procedure cls()'); sender.AddMethod(self, @TCdrPascalScript.cls , 'procedure ClrScr()'); sender.AddMethod(self, @TCdrPascalScript.cls , 'procedure ClearStdOut()'); sender.AddMethod(self, @TCdrPascalScript.clsErr , 'procedure ClearStdErr()'); sender.AddMethod(self, @TCdrPascalScript.ForceDirectory , 'procedure ForceDirectory(const Dir: string);'); sender.AddMethod(self, @TCdrPascalScript.GetPathDelimiter, 'function GetPathDelimiter(): string;'); sender.AddMethod(self, @TCdrPascalScript.GetPathDelimiter, 'function PathDelim(): string;'); {$ifdef TOOLBOX_EMBEDDED_IN_GHTOPO} sender.AddMethod(FDocuTopo, @TToporobotStructure2012.GetNomEtude , 'function DOCTOPO_GetNomEtude(): string;'); sender.AddMethod(FDocuTopo, @TToporobotStructure2012.GetNbSeries , 'function DOCTOPO_GetNbSeries(): integer;'); sender.AddMethod(FDocuTopo, @TToporobotStructure2012.GetNbEntrances , 'function DOCTOPO_GetNbEntrees(): integer;'); sender.AddMethod(FDocuTopo, @TToporobotStructure2012.GetNbReseaux , 'function DOCTOPO_GetNbReseaux(): integer;'); sender.AddMethod(FDocuTopo, @TToporobotStructure2012.GetNbExpes , 'function DOCTOPO_GetNbExpes(): integer;'); sender.AddMethod(FDocuTopo, @TToporobotStructure2012.GetNbCodes , 'function DOCTOPO_GetNbCodes(): integer;'); sender.AddMethod(FDocuTopo, @TToporobotStructure2012.GetNbSecteurs , 'function DOCTOPO_GetNbSecteurs(): integer;'); sender.AddMethod(FDocuTopo, @TToporobotStructure2012.GetNbAntennes , 'function DOCTOPO_GetNbAntennes(): integer;'); sender.AddMethod(FDocuTopo, @TToporobotStructure2012.CheckerLesDonneesTopo , 'procedure DOCTOPO_CheckerLesDonneesTopo();'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_GetNbreStationsOfSerieByIdx , 'function DOCTOPO_GetNbStationsOfSerieByIdx(const Idx: integer): integer;'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_GetNbreStationsOfSerieByNoSerie , 'function DOCTOPO_GetNbStationsOfSerieByNoSerie(const NumeroSerie: integer): integer;'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_GetNumeroEtNomDeSerieByIdx , 'function DOCTOPO_GetNumeroEtNomDeSerieByIdx(const Idx: integer; out QNumSerie: integer; out QNomSerie: string; out QNbVisees: integer): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_GetLengthSerieByNoSerie , 'function DOCTOPO_GetLengthSerieByNoSerie(const NoSerie: integer): double;'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_GetLengthSerieAtStationByNoSerie, 'function DOCTOPO_GetLengthSerieAtStationByNoSerie(const NoSerie, NoStation: integer): double;'); EWE := 'function DOCTOPO_BeginNewSerie(const QNumeroSerie: integer; ' + 'const QNoEntrance, QNoReseau: integer; ' + 'const QSerDep, QPtDep, QSerArr, QPtArr: integer; ' + 'const QName: string): boolean;'; sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_BeginNewSerie , EWE); EWE := 'function DOCTOPO_AddNewVisee(const QExpe, QCode: integer; ' + 'const QTypeVisee, QSecteur: integer; ' + 'const QLong, QAz, QPente, QLG, QLD, QHZ, QHN: double; ' + 'const QIDTerrain, QObserv: string): boolean;'; sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_AddNewVisee , EWE); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_EndNewSerie , 'procedure DOCTOPO_EndNewSerie();'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_RemoveSerieByNumSerie , 'procedure DOCTOPO_RemoveSerieByNumSerie(const QNumeroSerie: integer);'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_RemoveSerieByIdx , 'procedure DOCTOPO_RemoveSerieByIdx(const Idx: integer);'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_AddNewEntrance , 'procedure DOCTOPO_AddNewEntrance(const RefSer, RefSt: integer; const XEntree, YEntree, ZEntree: double; const R, G, B: integer; const NomEntree, IDTerrain, Observ: string);'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_ExtractDataForEntranceByIdx , 'function DOCTOPO_ExtractDataForEntranceByIdx(const Idx: integer; out RefSer, RefSt: integer; out XEntree, YEntree, ZEntree: double; out NomEntree: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_ModifyEntrance , 'function DOCTOPO_ModifyEntrance(const QIdx: integer; const RefSer, RefSt: integer; const XEntree, YEntree, ZEntree: double; const R, G, B: integer; const NomEntree, IDTerrain, Observ: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DOCTOPO_AddNewReseau , 'procedure DOCTOPO_AddNewReseau(const QTypeReseau: integer; const R, G, B: integer; const QNomReseau, QObsReseau: string); '); // BDD entités sender.AddMethod(self , @TCdrPascalScript.STATION_ExtractCoordsFromSerSt , 'function STATION_ExtractCoordsFromSerSt(const QSerie, QStation: integer; out QX, QY, QZ: double): boolean;'); sender.AddMethod(self , @TCdrPascalScript.STATION_FindByID , 'function STATION_FindByID(const QID: string; out QSerie, QStation: integer; out QX, QY, QZ: double): boolean;'); // fiches PDF de stations sender.AddMethod(self , @TCdrPascalScript.BeginListeFichesStations , 'function BeginListeFichesStations(): boolean;'); sender.AddMethod(self , @TCdrPascalScript.AddFicheStation , 'procedure AddFicheStation(const QSr, QSt: integer; const Tag1, Tag2: string);'); sender.AddMethod(self , @TCdrPascalScript.GetNbFichesStations , 'function GetNbFichesStations(): integer;'); sender.AddMethod(self , @TCdrPascalScript.ExportFichesToPDF , 'procedure ExportFichesToPDF(const QFilename: string; const QCompressed: boolean);'); sender.AddMethod(self , @TCdrPascalScript.EndListeFichesStations , 'procedure EndListeFichesStations();'); // maillages sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_LoadMaillageForIdx , 'function LST_Maillages_LoadMaillageForIdx(const QFilename: string; const Idx: integer): boolean;'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_GetNbVertexOfMaillage, 'function LST_Maillages_GetNbVertexOfMaillage(const Idx: integer): integer;'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_GetNbTrianglesOfMaillage, 'function LST_Maillages_GetNbTrianglesOfMaillage(const Idx: integer): integer;'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_UnloadMaillage, 'procedure LST_Maillages_UnloadMaillage(const Idx: integer);'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_AddProfil , 'procedure MNT_AddProfil(const ProfilName: string; const X1, Y1, X2, Y2: double; const QCouleur: integer; const QOpacity: byte);'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_RemoveProfil , 'procedure LST_Maillages_RemoveProfil(const Idx: integer);'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_GetNbProfils , 'function LST_Maillages_GetNbProfils(): integer;'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_ClearProfils , 'procedure LST_Maillages_ClearProfils();'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_ExtractBounds , 'function LST_Maillages_ExtractBounds(out QX1, QY1, QZ1, QX2, QY2, QZ2: double): boolean;'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_ExtractAltitudeFromXY , 'function LST_Maillages_ExtractAltitudeFromXY(const QX, QY: double; out QZ: double): boolean'); EWE := 'function LST_Maillages_GenerateSetOfProfilsFromRect(const QNameSet:string; ' + 'const X1, Y1, X2, Y2, X3, Y3: double; ' + 'const NbProfilsHorizontaux : integer; ' + 'const NbProfilsVerticaux : integer; ' + 'const ColorMinH, ColorMaxH : integer; ' + // TColor est un integer 'const ColorMinV, ColorMaxV : integer; ' + 'const Sens: byte): boolean;'; sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_GenerateSetOfProfilsFromRect , EWE); EWE := 'function LST_Maillages_GenerateSetOfProfilsFromQuad(const QNameSet: string; ' + 'const X1, Y1, X2, Y2, X3, Y3, X4, Y4: double; ' + 'const NbProfilsHorizontaux : integer; ' + 'const NbProfilsVerticaux : integer; ' + 'const ColorMinH, ColorMaxH : integer; ' + 'const ColorMinV, ColorMaxV : integer; ' + 'const Sens: byte): boolean;'; sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_GenerateSetOfProfilsFromQuad , EWE); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_CheckerAltimetrieEntrees , 'procedure LST_Maillages_CheckerAltimetrieEntrees(const DoAdjustAtMNT: boolean; const DeltaZMax: double);'); EWE := 'procedure GRAPHE_GenererHTML(const PathStart, PathEnd: string; ' + 'const Width, Height, MenuWidth: integer; ' + 'const QNameItineraire: string; ' + 'const QFilename: string; ' + 'const QEtendueAutourStation: double; ' + 'const QMapBackgroundColor, QMapCenterlineColor: integer);'; sender.AddMethod(self , @TCdrPascalScript.GRAPHE_GenererHTML , EWE); sender.AddMethod(self , @TCdrPascalScript.GRAPHE_ExtractNode , 'procedure GRAPHE_ExtractNode(const Idx: integer);'); sender.AddMethod(self , @TCdrPascalScript.GRAPHE_FindShortestPath , 'function GRAPHE_FindShortestPath(const PathStart, PathEnd, Pathname: string): integer;'); sender.AddMethod(self , @TCdrPascalScript.GRAPHE_ExtractPathNode , 'procedure GRAPHE_ExtractPathNode(const QIdx: integer; out QIDStation: string; out QX, QY, QZ: double);'); // LISTE DES MAILLAGES // ================================================ sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_GetNbMaillages , 'function LST_Maillages_GetNbMaillages(): integer;'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_GetNomMaillage , 'function LST_Maillages_GetNomMaillage(const Idx:integer): string;'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_GetNbProfils , 'function LST_Maillages_GetNbProfils(): integer;'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_LoadMaillageForIdx , 'function LST_Maillages_LoadMaillageForIdx(const QFilename: string; const Idx: integer): boolean;'); sender.AddMethod(self , @TCdrPascalScript.LST_Maillages_LoadMaillageAndAdd , 'function LST_Maillages_LoadMaillageAndAdd(const QFilename: string): boolean;'); //sender.AddMethod(self , @TCdrPascalScript. , ''); //sender.AddMethod(self , @TCdrPascalScript. , ''); //sender.AddMethod(self , @TCdrPascalScript. , ''); //sender.AddMethod(self , @TCdrPascalScript. , ''); //sender.AddMethod(self , @TCdrPascalScript. , ''); // // spécifique DIRA: PRAbscisse EWE := 'procedure DIRA_TGISLineString_ExtractFromString(const LS: string; ' + 'const Abscisse: double; out Length: double; ' + 'out AtAbscisseX, AtAbscisseY: double; ' + 'out MiddleAbscisseX, MiddleAbscisseY: double);'; sender.AddMethod(self , @TCdrPascalScript.DIRA_TGISLineString_ExtractFromString , EWE); // spécifique SQLITE // spécifique BRIC4 EWE := 'function BRIC4_ExtractFromDatagram(const D: string; ' + 'out Horodatage: string; ' + 'out Long, Azimut, Pente: single): boolean;'; {$IFDEF GHTOPO_SIMPLIFIE} sender.AddMethod(self , @TCdrPascalScript.BRIC4_ExtractFromDatagram, EWE); EWE := 'function BRIC4_MakeStrDatagramFromMesureLAPHorodatee(const Horodate: string; ' + 'const Long, Azimut, Pente: single): string;'; sender.AddMethod(self , @TCdrPascalScript.BRIC4_MakeStrDatagramFromMesureLAPHorodatee, EWE); {$endif GHTOPO_SIMPLIFIE} {$endif TOOLBOX_EMBEDDED_IN_GHTOPO} // QRCode sender.AddMethod(self , @TCdrPascalScript.QRCode_Generate , 'procedure QRCode_Generate(const ImgWidth: integer; const QFilenamePNG: string; const QTextToEncode: string);'); // display graphisme sender.AddMethod(self , @TCdrPascalScript.DRAW2D_BeginDrawing , 'function DRAW2D_BeginDrawing(const w, h: integer; const x1, y1, x2, y2: double; const Title: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_EndAndDisplayDrawing , 'procedure DRAW2D_EndAndDisplayDrawing();'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_SetBackgroundColor , 'procedure DRAW2D_SetBackgroundColor(const R, G, B, A: byte);'); EWE := 'function DRAW2D_AddStyleSheet(const QStylename: string; ' + 'const QPenColorR, QPenColorG, QPenColorB, QPenOpacity: byte; ' + 'const QPenWidtdhInPX: byte; const QPenWidthInMM: double; ' + 'const QBshColorR, QBshColorG, QBshColorB, QBshOpacity: byte; const QBshStyle: byte;' + 'const QFntName: string; const QFntColorR, QFntColorG, QFntColorB, QFntOpacity: byte;' + 'const QFntSizeInPX: byte; const QFntSizeInMM: double; '+ 'const QFntStyle: string): integer;'; sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddStyleSheet , EWE); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_SetStyleSheet , 'procedure DRAW2D_SetStyleSheet(const Idx:integer);'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddLayer , 'procedure DRAW2D_AddLayer(const QLayerName: string; const QAcadIdxColor: integer; const QR, QG, QB, QA: byte);'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_BeginPolyline , 'function DRAW2D_BeginPolyline(const QIdxLayer: integer; const QName: string; const Closed: boolean): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddVertex , 'procedure DRAW2D_AddVertex(const QX, QY: double);'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_EndPolyline , 'procedure DRAW2D_EndPolyline();'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddTexte , 'function DRAW2D_AddTexte(const QIdxLayer: integer; const QName: string; const QX, QY, AngleOrientation: double; const QAlignment: byte; const Texte: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddEllipse , 'function DRAW2D_AddEllipse(const QIdxLayer: integer; const QName: string; const QX, QY, QR1, QR2: double): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddRectangle , 'function DRAW2D_AddRectangle(const QIdxLayer: integer; const QName: string; const QX1, QY1, QX2, QY2: double): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddLine , 'function DRAW2D_AddLine(const QIdxLayer: integer; const QName: string; const QX1, QY1, QX2, QY2: double): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddTriangle , 'function DRAW2D_AddTriangle(const QIdxLayer: integer; const QName: string; const X1, Y1, X2, Y2, X3, Y3: double): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddMarker , 'function DRAW2D_AddMarker(const QIdxLayer: integer; const QName: string; const QX, QY: double; const QSize, QAlignment: byte; const QCaption: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddImage , 'function DRAW2D_AddImage(const QIdxLayer: integer; const QName: string; const QX1, QY1, QX2, QY2: double; const QFilename: string; const QCaption: string): boolean;'); // vertex et objets indexés sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddIndexedVertex , 'procedure DRAW2D_AddIndexedVertex(const QID: string; const QX, QY, QZ: double);'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_BeginListeIndexedVertex , 'procedure DRAW2D_BeginListeIndexedVertex();'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_FindIndexedVertexByID , 'function DRAW2D_FindIndexedVertexByID(const QID: string; out QInternalIdx: integer; out QIdentificateur: string; out QX, QY, QZ: double): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_getIndexedVertex , 'function DRAW2D_getIndexedVertex(const Idx: integer; out QID: string; out QX, QY, QZ: double): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_getNbIndexedVertex , 'function DRAW2D_getNbIndexedVertex(): integer;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_EndListeIndexedVertex , 'procedure DRAW2D_EndListeIndexedVertex();'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_BeginIndexedPolyline , 'function DRAW2D_BeginIndexedPolyline(const QIdxLayer: integer; const QName: string; const Closed: boolean): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddIndexOfVertex , 'procedure DRAW2D_AddIndexOfVertex(const Idx: string);'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_EndIndexedPolyline , 'procedure DRAW2D_EndIndexedPolyline();'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddIndexedTexte , 'function DRAW2D_AddIndexedTexte(const QIdxLayer: integer; const QName: string; const Cle: string; const QOffsetX, QOffsetY, AngleOrientation: double; const QAlignment: byte; const Texte: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.DRAW2D_AddIndexedMarker , 'function DRAW2D_AddIndexedMarker(const QIdxLayer: integer; const QName: string; const Cle: string; const QOffsetX, QOffsetY: double; const QSize, QAlignment: byte; const QCaption: string): boolean;'); // transferts FTP sender.AddMethod(self , @TCdrPascalScript.FTP_BeginConnexion , 'function FTP_BeginConnexion(const QHost: string; const QPort: integer; const QUser, QPassword: string; out QReturnCode: integer; out QReturnMsg: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.FTP_EndConnexion , 'procedure FTP_EndConnexion();'); sender.AddMethod(self , @TCdrPascalScript.FTP_GetFileName , 'function FTP_GetFileName(const Idx: integer): String;'); sender.AddMethod(self , @TCdrPascalScript.FTP_GetNbFilesOfLast , 'function FTP_GetNbFilesOfLast(): integer;'); sender.AddMethod(self , @TCdrPascalScript.FTP_ListFilenamesOf , 'function FTP_ListFilenamesOf(const Path: string): integer;'); sender.AddMethod(self , @TCdrPascalScript.FTP_SendFile , 'function FTP_SendFile(const QFilename: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.FTP_SetRemoteDirectory , 'procedure FTP_SetRemoteDirectory(const D: string);'); //sender.AddMethod(self , @TCdrPascalScript.FTP_, ''); //sender.AddMethod(self , @TCdrPascalScript.FTP_, ''); //sender.AddMethod(self , @TCdrPascalScript.FTP_, ''); sender.AddMethod(self , @TCdrPascalScript.DateTimePascalToSQL , 'function DateTimePascalToSQL(const D: double): string;'); sender.AddMethod(self , @TCdrPascalScript.DateTimeSqlToPascal , 'function DateTimeSqlToPascal(const D: string): double;'); // fonctions EXIF sender.AddMethod(self , @TCdrPascalScript.EXIF_ExtractPositionAndHorodatage , 'function EXIF_ExtractPositionAndHorodatage(const MyPhoto: string; out Lat, Lon, Alt: double; out Horodatage: double; out MsgErr: string): boolean;'); // parcours de dossiers sender.AddMethod(self , @TCdrPascalScript.FILE_FindFirst , 'function FILE_FindFirst(const QPath: string; out QFileFound: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.FILE_FindNext , 'function FILE_FindNext(out QFileFound: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.FILE_FindClose , 'procedure FILE_FindClose();'); // liste interne de résultats (TStringList) sender.AddMethod(self , @TCdrPascalScript.LST_RESULTS_Clear , 'procedure LST_RESULTS_Clear();'); sender.AddMethod(self , @TCdrPascalScript.LST_RESULTS_Add , 'procedure LST_RESULTS_Add(const S: string);'); sender.AddMethod(self , @TCdrPascalScript.LST_RESULTS_GetItem , 'function LST_RESULTS_GetItem(const Idx: integer): string;'); sender.AddMethod(self , @TCdrPascalScript.LST_RESULTS_GetNb , 'function LST_RESULTS_GetNb(): integer;'); sender.AddMethod(self , @TCdrPascalScript.LST_RESULTS_LoadFromFile , 'function LST_RESULTS_LoadFromFile(const QFilename: string): integer;'); sender.AddMethod(self , @TCdrPascalScript.LST_RESULTS_SaveToFile , 'procedure LST_RESULTS_SaveToFile(const QFilename: string);'); // carte OSM sender.AddMethod(self , @TCdrPascalScript.OSM_InitializeMap , 'function OSM_InitializeMap(const QFilename, QDocTitle: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.OSM_WriteHeader , 'procedure OSM_WriteHeader();'); sender.AddMethod(self , @TCdrPascalScript.OSM_AddPlacemark , 'procedure OSM_AddPlacemark(const QIdxLayer: integer; const QLat, QLon, QAltitude: double; const QEtiquette, QDesignation, QDescription, QObservations, QPhoto: string);'); sender.AddMethod(self , @TCdrPascalScript.OSM_AddLayer , 'procedure OSM_AddLayer(const QLayerIsAMap, QLayerDisplayed: boolean; const QLayerName: string; const QLayerTitle: string; const QLayerAttribution: string; const QURL: String; const QLayerMarkerStyle: integer; const QLayerMarkerSize: double; const QRed, QGreen, QBlue, QOpacity: integer);'); sender.AddMethod(self , @TCdrPascalScript.OSM_IdxLayerOf , 'function OSM_IdxLayerOf(const QLayerName: string): integer;'); sender.AddMethod(self , @TCdrPascalScript.OSM_GetNbLayers , 'function OSM_GetNbLayers(): integer;'); sender.AddMethod(self , @TCdrPascalScript.OSM_FinalizeMap , 'procedure OSM_FinalizeMap()'); // carte KML sender.AddMethod(self , @TCdrPascalScript.KML_InitializeMap , 'function KML_InitializeMap(const QFilename, QDocTitle: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.KML_WriteHeader , 'procedure KML_WriteHeader();'); EWE := 'procedure KML_AddPlacemark(const QNativeCoordX, QNativeCoordY: double; ' + 'const QLat, QLon, QAltitude: double; ' + 'const QEtiquette, QDesignation, QDescription, QObservations, QPhoto: string);'; sender.AddMethod(self , @TCdrPascalScript.KML_AddPlacemark , EWE); sender.AddMethod(self , @TCdrPascalScript.KML_BeginFolder , 'procedure KML_BeginFolder(const S: string);'); sender.AddMethod(self , @TCdrPascalScript.KML_EndFolder , 'procedure KML_EndFolder(const S: string);'); sender.AddMethod(self , @TCdrPascalScript.KML_FinalizeMap , 'procedure KML_FinalizeMap()'); // dialogues sender.AddMethod(self , @TCdrPascalScript.DLG_DoDialogListBox , 'function DialogListBox(const QTitle: string; out QSelectedIndex: integer; out QSelectedItem: string): boolean;'); // liste d'arguments (TGHStringArray) sender.AddMethod(self , @TCdrPascalScript.ARGV_Clear , 'procedure ARGV_Clear();'); sender.AddMethod(self , @TCdrPascalScript.ARGV_GetNthArgAsString , 'function ARGV_GetNthArgAsString(const idx: integer): string;'); sender.AddMethod(self , @TCdrPascalScript.ARGV_GetNthArgAsInteger , 'function ARGV_GetNthArgAsInteger(const idx: integer; const Default: integer): integer;'); sender.AddMethod(self , @TCdrPascalScript.ARGV_GetNthArgAsFloat , 'function ARGV_GetNthArgAsFloat(const idx: integer; const Default: double): double;'); sender.AddMethod(self , @TCdrPascalScript.ARGV_LineSplit , 'function ARGV_LineSplit(const S: string; const Sep: char): boolean;'); sender.AddMethod(self , @TCdrPascalScript.ARGV_GetNbArgs , 'function ARGV_GetNbArgs(): integer;'); // convertisseur de coordonnées sender.AddMethod(self , @TCdrPascalScript.ConversionCoordonneesEPSG , 'function ConversionCoordonneesEPSG(const Src, Tgt: integer; const PointInX, PointInY: double; out PointOutX, PointOutY: double): boolean;'); //sender.AddFunction(@ConversionCoordonneesIsoleesEPSG, 'function ConversionCoordonneesEPSG(const Src, Tgt: integer; const PointInX, PointInY: double; out PointOutX, PointOutY: double): boolean;'); // interrogation de BDD sender.AddMethod(self , @TCdrPascalScript.SQL_Connect , 'function SQL_Connect(const QHostName, QDatabaseName, QUsername, QPassword: string; const QPort: integer): boolean;'); sender.AddMethod(self , @TCdrPascalScript.SQL_Close , 'procedure SQL_Close();'); sender.AddMethod(self , @TCdrPascalScript.SQL_ClearResults , 'procedure SQL_ClearResults();'); sender.AddMethod(self , @TCdrPascalScript.SQL_ExecQuery , 'function SQL_ExecQuery(const QRequest: string): boolean; '); sender.AddMethod(self , @TCdrPascalScript.SQL_Result_GetNbCols , 'function SQL_Result_GetNbCols(): integer;'); sender.AddMethod(self , @TCdrPascalScript.SQL_Result_GetNbRows , 'function SQL_Result_GetNbRows(): integer;'); sender.AddMethod(self , @TCdrPascalScript.SQL_Result_GetValue , 'function SQL_Result_GetValue(const ARow, ACol: integer): string;'); // extraction d'une station de la BDD entités sender.AddMethod(self , @TCdrPascalScript.ExtractCoordsOfStation , 'function ExtractCoordsOfStation(const QSer, QSt: Integer; out QX, QY, QZ: double): boolean;'); // console d'entrée sender.AddMethod(self , @TCdrPascalScript.ConsoleEOF , 'function ConsoleEOF(): boolean;'); sender.AddMethod(self , @TCdrPascalScript.ClearInputConsole , 'procedure ClearInputConsole();'); sender.AddMethod(self , @TCdrPascalScript.ReadLineCin , 'procedure Readln(out QOutput: string);'); sender.AddMethod(self , @TCdrPascalScript.ReadLineCin , 'procedure cin(out QOutput: string);'); // Pour tests: Ecriture sur la console d'entrée sender.AddMethod(self , @TCdrPascalScript.WriteToConsoleIn , 'procedure WriteToConsoleIn(const S: string);'); sender.AddMethod(self , @TCdrPascalScript.ConsoleIsEmpty , 'function ConsoleIsEmpty(): boolean;'); // TArrayOfTPointLatLonAltAcc interne; sender.AddMethod(self , @TCdrPascalScript.ARR_XYZ_Redim , 'procedure ARR_XYZ_Redim(const Nb: integer);'); sender.AddMethod(self , @TCdrPascalScript.ARR_XYZ_GetNbElements , 'function ARR_XYZ_GetNbElements: integer; '); sender.AddMethod(self , @TCdrPascalScript.ARR_XYZ_AppendFrom , 'procedure ARR_XYZ_AppendFrom(const Lat, Lon, Alt, Acc, TagFloat: double; const QTag: string);'); sender.AddMethod(self , @TCdrPascalScript.ARR_XYZ_GetFrom , 'procedure ARR_XYZ_GetFrom(const Idx: integer; out Lat, Lon, Alt, Acc, TagFloat: double; out QTag: string);'); sender.AddMethod(self , @TCdrPascalScript.ARR_XYZ_GetBounds , 'procedure ARR_XYZ_GetBounds(out CX1, CY1, CZ1, CX2, CY2, CZ2: double);'); sender.AddMethod(self , @TCdrPascalScript.ARR_XYZ_AddBoundingBoxMargin , 'procedure ARR_XYZ_AddBoundingBoxMargin(const M: double);'); // BinHex sender.AddMethod(self , @TCdrPascalScript.BINHEX_Open , 'function BINHEX_Open(): boolean'); sender.AddMethod(self , @TCdrPascalScript.BINHEX_SendString , 'procedure BINHEX_SendString(const S: string);'); sender.AddMethod(self , @TCdrPascalScript.BINHEX_SaveToHex , 'function BINHEX_SaveToHex(const QFilename, Description: string): boolean;'); sender.AddMethod(self , @TCdrPascalScript.BINHEX_LoadFromHex , 'function BINHEX_LoadFromHex(const QFilename: string): integer;'); // SMTP sender.AddMethod(self , @TCdrPascalScript.SMTP_BeginTransaction , 'procedure SMTP_BeginTransaction(const ASubject: string);'); sender.AddMethod(self , @TCdrPascalScript.SMTP_AddLine , 'procedure SMTP_AddLine(const S: string);'); //sender.AddMethod(self , @TCdrPascalScript.SMTP_AddAttachment , 'procedure SMTP_AddAttachment(const S: string);'); sender.AddMethod(self , @TCdrPascalScript.SMTP_EndTransactionAndSend , 'procedure SMTP_EndTransactionAndSend(const ATo: string);'); // Carte OSM interactive sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_Create , 'function OSM_MAP_WIND_Create(const CodeEPSG: integer; const QX, QY: double): boolean;'); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_AddLayer , 'procedure OSM_MAP_WIND_AddLayer(const QLayerName: string; const QOpacity: single); '); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_SetCurrentLayerByIdx , 'procedure OSM_MAP_WIND_SetCurrentLayerByIdx(const QIdx: integer);'); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_SetCurrentLayerByName , 'procedure OSM_MAP_WIND_SetCurrentLayerByName(const QLayerName: string);'); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_AddPoint , 'procedure OSM_MAP_WIND_AddPoint(const QX, QY, QZ: double; const QLabel: string);'); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_BeginPolyLine , 'function OSM_MAP_WIND_BeginPolyLine(): boolean;'); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_BeginPolygone , 'function OSM_MAP_WIND_BeginPolygone(): boolean;'); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_AddVertex , 'procedure OSM_MAP_WIND_AddVertex(const QX, QY, QZ: double);'); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_EndPolyLine , 'procedure OSM_MAP_WIND_EndPolyLine(const LR, LG, LB, LA: byte; const LineWidth: double);'); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_EndPolygone , 'procedure OSM_MAP_WIND_EndPolygone(const LR, LG, LB, LA: byte; const BR, BG, BB, BA: byte; const LineWidth: double);'); // sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_ , ''); // sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_ , ''); sender.AddMethod(self , @TCdrPascalScript.OSM_MAP_WIND_Display , 'procedure OSM_MAP_WIND_Display()'); // Palette 256 sender.AddMethod(self , @TCdrPascalScript.PALETTE_256_GetColorByIndex , 'function PALETTE_256_GetColorByIndex(const Idx: integer; out LR, LG, LB, LA: byte): boolean;'); sender.AddMethod(self , @TCdrPascalScript.PALETTE_256_GetIdxNearestColor , 'function PALETTE_256_GetIdxNearestColor(const LR, LG, LB, LA: byte): integer;'); // sender.AddMethod(self , @TCdrPascalScript., ''); (* sender.AddMethod(self , @TCdrPascalScript., ''); sender.AddMethod(self , @TCdrPascalScript., ''); sender.AddMethod(self , @TCdrPascalScript., ''); sender.AddMethod(self , @TCdrPascalScript., ''); sender.AddMethod(self , @TCdrPascalScript., ''); //*) //} end;