Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
error en RemObjects Pascal Script

Hola, como estan foros, pues teng un error con estos componentes, miren tengo una Unidad hecha por mi:

esto es lo que tiene(es medio largo):

Código Delphi [-]
unit Max;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Gauges, Registry, ShlObj, ActiveX,IdHTTP, WinInet, ComObj, ShellApi, IniFiles;

Function ShowMessage1(Text: String; Tipo: TMsgDlgType): String;
Function Delay(msecs:integer): Integer;
Function CopyProg(Origen1, Destino1, NameFile: String; Gauges: TGauge; Labels: TLabel): String;
Function CopyLista(Archivo: String; NArchivoTot: Integer; Destino: String; Gauges: TGauge; Labels: TLabel; Forms: TForm): String;
function LineasVisibles(Memo: TMemo): integer;
Function LeeReg(RootKeys: HKEY; Key: String; NameValue: String): String;
Function CreaReg(RootKeys: HKEY; Key: String; NameValue: String; Value: String): String;
Function DelKey(RootKeys: HKEY; Key: String): String;
Function IfReg(RootKeys: HKEY; Key: String; ValueExists1: String): Boolean;
Function CreaDir(Directory: String): String;
Function DeleteDir(Directory: String): String;
Function SelectDir(Directory: String): String;
Function CreaLnk( Exe, Argumentos, DirTrabajo, NombreLnk, DirDestino:string): String;
Function EjecutaExe(Exe: String; Forms: TForm): String;
Function RunAndWaitShell(Ejecutable, Argumentos:string; Visibilidad:integer; Forms: TForm): String;
Function CopyProgSimple(Origen: String; Destino: String; ErrorNoCopiado: String): String;
function CopiaTodo(Origen,Destino : String) : LongInt;
 function EjecutarEnInicio( NombrePrograma, NombreEjecutable: String;   SoloUnaVez: Boolean ): string;
Function BorraDir(Directory: String): String;
function GetVolumeID(DriveChar: Char): String;
function GetFileDate(TheFileName: string): string;
function GetWindowsDirectory : String;
function GetSystemDirectory : String;
function GetCurrentDirectory: String;
function GetTemporalDirectory: String;
function ObtienePath(De:String):string;
function IntToHex1( n:integer ):string;
function HextoInt(HexStr:string):integer;
function IsEMail(EMail: string): Boolean;
function ValRut(Rut: String):String;
function DelFile(Archivo: String):String;
function Encrypt(const S: String; Key: Word): String;
function Decrypt(const S: String; Key: Word): String;
function TransformStr(QueCambio:String; Strings: String; Por: Char) : String;
function stripped(stripchar : char; str : string) : string;
function  GetAppInfo(De:string; fName: string):string;
function HextoIntAdv(HexStr:string; Number, Number1: Integer):integer;
function Say(S: String; Left, Top: Integer; Forms: TForm): String;
function WriteIni(Titulo: String; NomVar: String;Value: String; FileNam: String): String;
function ReadIni(Titulo: String; NomVar: String; Default: String; FileNam: String): String;
function CenterInClient(Obj:TControl; Const ObjRef:TControl): String;
FUNCTION DeleteFilesOfFolder(CONST Folder: TFileName): BOOLEAN;
function GetToken(Cadena:string; Separador:char; Token:integer):string; overload
function DOSWriteLn(S: String): String;
function DOSPause(Miliseconds: Integer): String;
function DosLimpiar: boolean;
function BorrarLetraConRuta(Letra: Char): Boolean;
function AsociarLetraConRuta(Letra: Char; Ruta: String): Boolean;
function ParpadeamiAPP(): String;
function ReiniciarApp: String;
function LeeRegRemote(UNCName: string): string;
function GetUserName : String;
function GetComputerName : String;
function IP_Publica:string;
function VaciaPapelera(): String;

 const
         C1 = 52845;
         C2 = 11719;




implementation


function VaciaPapelera(): String;

  type
    TSHEmptyRecycleBin = function (Wnd: HWND;
                                   LPCTSTR: PChar;
                                   DWORD: Word): integer; stdcall;
  var
    MangoLib           : THandle;
    SHEmptyRecycleBin  : TSHEmptyRecycleBin;
  begin
     {Cargamos SHell32.DLL}
     {Load Shell32.DLL}
     MangoLib := LoadLibrary(PChar('Shell32.dll'));

     {Si no se pudo... error}
     {if not... error}
     if MangoLib = 0 then
       Raise Exception.Create( 'No se pudo cargar Shell32.DLL'+#13+
                               'Cannot load Shell32.DLL');

     {Buscamos dentro de la DLL la funcion que queremos}
     {Search into DLL the required funtion}
     @SHEmptyRecycleBin := GetProcAddress(MangoLib, 'SHEmptyRecycleBinA');

     {Si no existe... error}
     {If don't exists... error}
     if @SHEmptyRecycleBin = nil then
     begin
       FreeLibrary(MangoLib);
       Raise Exception.Create( 'No se pudo encontrar SHEmptyRecycleBinA en Shell32.DLL'+#13+
                               'Cannot find SHEmptyRecycleBinA in Shell32.DLL');
     end;

    {Vaciamos la papelera, sin sonido ni confirmación}
    {Empty the Recycle bin...}
    SHEmptyRecycleBin(Application.Handle,'',7);

    {Liberamos la DLL}
    {Free the DLL}
    FreeLibrary(MangoLib);
  end;
...........etc.................
estoy ocupando los componentes RemObjects Pascal Srcipt, ocupe el porgrama que viene con ese "PSUnitImporter", me creó esta unidad:
"uPSI_Max.pas"
y tiene:

Código Delphi [-]
unit uPSI_Max;
{
This file has been generated by UnitParser v0.7, written by M. Knight
and updated by NP. v/d Spek and George Birbilis. 
Source Code from Carlo Kok has been used to implement various sections of
UnitParser. Components of ROPS are used in the construction of UnitParser,
code implementing the class wrapper is taken from Carlo Kok's conv utility

}
interface
 
uses
   SysUtils
  ,Classes
  ,uPSComponent
  ,uPSRuntime
  ,uPSCompiler
  ;
 
type 
(*----------------------------------------------------------------------------*)
  TPSImport_Max = class(TPSPlugin)
  protected
    procedure CompileImport1(CompExec: TPSScript); override;
    procedure ExecImport1(CompExec: TPSScript; const ri: TPSRuntimeClassImporter); override;
  end;
 
 
{ compile-time registration functions }
procedure SIRegister_Max(CL: TPSPascalCompiler);

{ run-time registration functions }
procedure RIRegister_Max_Routines(S: TPSExec);

procedure Register;

implementation


uses
   Windows
  ,Messages
  ,Variants
  ,Graphics
  ,Controls
  ,Forms
  ,Dialogs
  ,StdCtrls
  ,Gauges
  ,Registry
  ,ShlObj
  ,ActiveX
  ,IdHTTP
  ,WinInet
  ,ComObj
  ,ShellApi
  ,IniFiles
  ,Max
  ;
 
 
procedure Register;
begin
  RegisterComponents('Pascal Script', [TPSImport_Max]);
end;

(* === compile-time registration functions === *)
(*----------------------------------------------------------------------------*)
procedure SIRegister_Max(CL: TPSPascalCompiler);
begin
 CL.AddDelphiFunction('Function ShowMessage1( Text : String; Tipo : TMsgDlgType) : String');
 CL.AddDelphiFunction('Function Delay( msecs : integer) : Integer');
 CL.AddDelphiFunction('Function CopyProg( Origen1, Destino1, NameFile : String; Gauges : TGauge; Labels : TLabel) : String');
 CL.AddDelphiFunction('Function CopyLista( Archivo : String; NArchivoTot : Integer; Destino : String; Gauges : TGauge; Labels : TLabel; Forms : TForm) : String');
 CL.AddDelphiFunction('Function LineasVisibles( Memo : TMemo) : integer');
 CL.AddDelphiFunction('Function LeeReg( RootKeys : HKEY; Key : String; NameValue : String) : String');
 CL.AddDelphiFunction('Function CreaReg( RootKeys : HKEY; Key : String; NameValue : String; Value : String) : String');
 CL.AddDelphiFunction('Function DelKey( RootKeys : HKEY; Key : String) : String');
 CL.AddDelphiFunction('Function IfReg( RootKeys : HKEY; Key : String; ValueExists1 : String) : Boolean');
 CL.AddDelphiFunction('Function CreaDir( Directory : String) : String');
 CL.AddDelphiFunction('Function DeleteDir( Directory : String) : String');
 CL.AddDelphiFunction('Function SelectDir( Directory : String) : String');
 CL.AddDelphiFunction('Function CreaLnk( Exe, Argumentos, DirTrabajo, NombreLnk, DirDestino : string) : String');
 CL.AddDelphiFunction('Function EjecutaExe( Exe : String; Forms : TForm) : String');
 CL.AddDelphiFunction('Function RunAndWaitShell( Ejecutable, Argumentos : string; Visibilidad : integer; Forms : TForm) : String');
 CL.AddDelphiFunction('Function CopyProgSimple( Origen : String; Destino : String; ErrorNoCopiado : String) : String');
 CL.AddDelphiFunction('Function CopiaTodo( Origen, Destino : String) : LongInt');
 CL.AddDelphiFunction('Function EjecutarEnInicio( NombrePrograma, NombreEjecutable : String; SoloUnaVez : Boolean) : string');
 CL.AddDelphiFunction('Function BorraDir( Directory : String) : String');
 CL.AddDelphiFunction('Function GetVolumeID( DriveChar : Char) : String');
 CL.AddDelphiFunction('Function GetFileDate( TheFileName : string) : string');
 CL.AddDelphiFunction('Function GetWindowsDirectory : String');
 CL.AddDelphiFunction('Function GetSystemDirectory : String');
 CL.AddDelphiFunction('Function GetCurrentDirectory : String');
 CL.AddDelphiFunction('Function GetTemporalDirectory : String');
 CL.AddDelphiFunction('Function ObtienePath( De : String) : string');
 CL.AddDelphiFunction('Function IntToHex1( n : integer) : string');
 CL.AddDelphiFunction('Function HextoInt( HexStr : string) : integer');
 CL.AddDelphiFunction('Function IsEMail( EMail : string) : Boolean');
 CL.AddDelphiFunction('Function ValRut( Rut : String) : String');
 CL.AddDelphiFunction('Function DelFile( Archivo : String) : String');
 CL.AddDelphiFunction('Function Encrypt( const S : String; Key : Word) : String');
 CL.AddDelphiFunction('Function Decrypt( const S : String; Key : Word) : String');
 CL.AddDelphiFunction('Function TransformStr( QueCambio : String; Strings : String; Por : Char) : String');
 CL.AddDelphiFunction('Function stripped( stripchar : char; str : string) : string');
 CL.AddDelphiFunction('Function GetAppInfo( De : string; fName : string) : string');
 CL.AddDelphiFunction('Function HextoIntAdv( HexStr : string; Number, Number1 : Integer) : integer');
 CL.AddDelphiFunction('Function Say( S : String; Left, Top : Integer; Forms : TForm) : String');
 CL.AddDelphiFunction('Function WriteIni( Titulo : String; NomVar : String; Value : String; FileNam : String) : String');
 CL.AddDelphiFunction('Function ReadIni( Titulo : String; NomVar : String; Default : String; FileNam : String) : String');
 CL.AddDelphiFunction('Function CenterInClient( Obj : TControl; const ObjRef : TControl) : String');
 CL.AddDelphiFunction('Function DeleteFilesOfFolder( const Folder : TFileName) : BOOLEAN');
 CL.AddDelphiFunction('Function DOSWriteLn( S : String) : String');
 CL.AddDelphiFunction('Function DOSPause( Miliseconds : Integer) : String');
 CL.AddDelphiFunction('Function DosLimpiar : boolean');
 CL.AddDelphiFunction('Function BorrarLetraConRuta( Letra : Char) : Boolean');
 CL.AddDelphiFunction('Function AsociarLetraConRuta( Letra : Char; Ruta : String) : Boolean');
 CL.AddDelphiFunction('Function ParpadeamiAPP( ) : String');
 CL.AddDelphiFunction('Function ReiniciarApp : String');
 CL.AddDelphiFunction('Function LeeRegRemote( UNCName : string) : string');
 CL.AddDelphiFunction('Function GetUserName : String');
 CL.AddDelphiFunction('Function GetComputerName : String');
 CL.AddDelphiFunction('Function IP_Publica : string');
 CL.AddDelphiFunction('Function VaciaPapelera( ) : String');
 CL.AddConstantN('C1','LongInt').SetInt( 52845);
 CL.AddConstantN('C2','LongInt').SetInt( 11719);
end;

(* === run-time registration functions === *)
(*----------------------------------------------------------------------------*)
procedure RIRegister_Max_Routines(S: TPSExec);
begin
 S.RegisterDelphiFunction(@ShowMessage1, 'ShowMessage1', cdRegister);
 S.RegisterDelphiFunction(@Delay, 'Delay', cdRegister);
 S.RegisterDelphiFunction(@CopyProg, 'CopyProg', cdRegister);
 S.RegisterDelphiFunction(@CopyLista, 'CopyLista', cdRegister);
 S.RegisterDelphiFunction(@LineasVisibles, 'LineasVisibles', cdRegister);
 S.RegisterDelphiFunction(@LeeReg, 'LeeReg', cdRegister);
 S.RegisterDelphiFunction(@CreaReg, 'CreaReg', cdRegister);
 S.RegisterDelphiFunction(@DelKey, 'DelKey', cdRegister);
 S.RegisterDelphiFunction(@IfReg, 'IfReg', cdRegister);
 S.RegisterDelphiFunction(@CreaDir, 'CreaDir', cdRegister);
 S.RegisterDelphiFunction(@DeleteDir, 'DeleteDir', cdRegister);
 S.RegisterDelphiFunction(@SelectDir, 'SelectDir', cdRegister);
 S.RegisterDelphiFunction(@CreaLnk, 'CreaLnk', cdRegister);
 S.RegisterDelphiFunction(@EjecutaExe, 'EjecutaExe', cdRegister);
 S.RegisterDelphiFunction(@RunAndWaitShell, 'RunAndWaitShell', cdRegister);
 S.RegisterDelphiFunction(@CopyProgSimple, 'CopyProgSimple', cdRegister);
 S.RegisterDelphiFunction(@CopiaTodo, 'CopiaTodo', cdRegister);
 S.RegisterDelphiFunction(@EjecutarEnInicio, 'EjecutarEnInicio', cdRegister);
 S.RegisterDelphiFunction(@BorraDir, 'BorraDir', cdRegister);
 S.RegisterDelphiFunction(@GetVolumeID, 'GetVolumeID', cdRegister);
 S.RegisterDelphiFunction(@GetFileDate, 'GetFileDate', cdRegister);
 S.RegisterDelphiFunction(@GetWindowsDirectory, 'GetWindowsDirectory', cdRegister);
 S.RegisterDelphiFunction(@GetSystemDirectory, 'GetSystemDirectory', cdRegister);
 S.RegisterDelphiFunction(@GetCurrentDirectory, 'GetCurrentDirectory', cdRegister);
 S.RegisterDelphiFunction(@GetTemporalDirectory, 'GetTemporalDirectory', cdRegister);
 S.RegisterDelphiFunction(@ObtienePath, 'ObtienePath', cdRegister);
 S.RegisterDelphiFunction(@IntToHex1, 'IntToHex1', cdRegister);
 S.RegisterDelphiFunction(@HextoInt, 'HextoInt', cdRegister);
 S.RegisterDelphiFunction(@IsEMail, 'IsEMail', cdRegister);
 S.RegisterDelphiFunction(@ValRut, 'ValRut', cdRegister);
 S.RegisterDelphiFunction(@DelFile, 'DelFile', cdRegister);
 S.RegisterDelphiFunction(@Encrypt, 'Encrypt', cdRegister);
 S.RegisterDelphiFunction(@Decrypt, 'Decrypt', cdRegister);
 S.RegisterDelphiFunction(@TransformStr, 'TransformStr', cdRegister);
 S.RegisterDelphiFunction(@stripped, 'stripped', cdRegister);
 S.RegisterDelphiFunction(@GetAppInfo, 'GetAppInfo', cdRegister);
 S.RegisterDelphiFunction(@HextoIntAdv, 'HextoIntAdv', cdRegister);
 S.RegisterDelphiFunction(@Say, 'Say', cdRegister);
 S.RegisterDelphiFunction(@WriteIni, 'WriteIni', cdRegister);
 S.RegisterDelphiFunction(@ReadIni, 'ReadIni', cdRegister);
 S.RegisterDelphiFunction(@CenterInClient, 'CenterInClient', cdRegister);
 S.RegisterDelphiFunction(@DeleteFilesOfFolder, 'DeleteFilesOfFolder', cdRegister);
 S.RegisterDelphiFunction(@DOSWriteLn, 'DOSWriteLn', cdRegister);
 S.RegisterDelphiFunction(@DOSPause, 'DOSPause', cdRegister);
 S.RegisterDelphiFunction(@DosLimpiar, 'DosLimpiar', cdRegister);
 S.RegisterDelphiFunction(@BorrarLetraConRuta, 'BorrarLetraConRuta', cdRegister);
 S.RegisterDelphiFunction(@AsociarLetraConRuta, 'AsociarLetraConRuta', cdRegister);
 S.RegisterDelphiFunction(@ParpadeamiAPP, 'ParpadeamiAPP', cdRegister);
 S.RegisterDelphiFunction(@ReiniciarApp, 'ReiniciarApp', cdRegister);
 S.RegisterDelphiFunction(@LeeRegRemote, 'LeeRegRemote', cdRegister);
 S.RegisterDelphiFunction(@GetUserName, 'GetUserName', cdRegister);
 S.RegisterDelphiFunction(@GetComputerName, 'GetComputerName', cdRegister);
 S.RegisterDelphiFunction(@IP_Publica, 'IP_Publica', cdRegister);
 S.RegisterDelphiFunction(@VaciaPapelera, 'VaciaPapelera', cdRegister);
end;

 
 
{ TPSImport_Max }
(*----------------------------------------------------------------------------*)
procedure TPSImport_Max.CompileImport1(CompExec: TPSScript);
begin
  SIRegister_Max(CompExec.Comp);
end;
(*----------------------------------------------------------------------------*)
procedure TPSImport_Max.ExecImport1(CompExec: TPSScript; const ri: TPSRuntimeClassImporter);
begin
  RIRegister_Max(ri);
  RIRegister_Max_Routines(CompExec.Exec); // comment it if no routines
end;
(*----------------------------------------------------------------------------*)
 
 
end.

pero al compilarla, me da error en la que está marcado con negrita y subrayado: " RIRegister_Max(ri);"

¿Que puede ser?

Gracias.

54LU2
Responder Con Cita
  #2  
Antiguo 24-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ni idea. Podría ser una infinidad de cosas. Si especificaras cuál es el error que marca tendríamos más oportunidades de decir algo.

// Saludos
Responder Con Cita
  #3  
Antiguo 24-03-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo tampoco tengo ni idea.

Pero vi que arriba se define:

procedure SIRegister_Max(CL: TPSPascalCompiler);

y abajo se utiliza:

RIRegister_Max(ri);
Responder Con Cita
  #4  
Antiguo 25-03-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
Hola, pues disculpen por no contestar es que llegue recien XD; pues bien, veamos lo que dice duilioisola, no, intente cambiarlo como dices la R por la S pero me marca este error:

"Incompatible types 'TPSPascalCompiler' and 'TPSRuntimeClassImporter'

y respecto a roman, el error principal es:

Undeclared identifier : 'RIRegister_Max

que puede ser???

gracuas'
Responder Con Cita
  #5  
Antiguo 25-03-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
Undeclared identifier : 'RIRegister_Max
Quiere decir que no existe RIRegister_Max en el contexto de esa unit.
Quizás te falte agregar una Unidad en el "Uses".
Supongo que aquí:
Código Delphi [-]
uses
   Windows
  ,Messages
  ,Variants
  ,Graphics
  ,Controls
  ,Forms
  ,Dialogs
  ,StdCtrls
  ,Gauges
  ,Registry
  ,ShlObj
  ,ActiveX
  ,IdHTTP
  ,WinInet
  ,ComObj
  ,ShellApi
  ,IniFiles
  ,Max
  ,Unidad_que_contiene_a_RIRegister_Max;
...
Responder Con Cita
  #6  
Antiguo 25-03-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
no, no existe ninguna unidad que sea de ese ,tipo, mejor voy a intentar volver a generar el arhcivo en el PUnitImporter, de ahí comento, 54LU2..


EDITO: Lo generé, y no, me sale la misma estructura, y el mismo error, parece que es un problema de la aplicacipon , ¿alguien ha utilizado PUnitImporter de los componentes remobjects?

gracias.

Última edición por cmm07 fecha: 25-03-2009 a las 12:00:11.
Responder Con Cita
  #7  
Antiguo 25-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Disculpa pero... si el error está viniendo desde un componente de RemObjects... ¿porqué no ver si RemObjects ofrece soporte técnico? No se, supongo que ellos deben tener algo así.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 25-03-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
gracias delphius, intentaré contactar con la empresa via em,ail u otra, espero poder encontrar algun contacto en la pagina, gracias...
Responder Con Cita
  #9  
Antiguo 26-03-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
hola, ya me cobntacté con ellos y me dijieron que tenia que eliminar esa linea, pues más rato haré la prueba..
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
RemObjects y eventos rastafarey Varios 3 29-01-2013 17:52:27
RemObjects Rockin Providers 2 03-03-2009 10:10:44
ANN: Soy reseller de RemObjects SDK mamcx Debates 0 21-10-2008 18:33:44
Pascal Script o similares Ñuño Martínez Varios 2 24-10-2007 19:53:58
manual de excepciones de object pascal para free pascal??? Garion OOP 3 27-05-2005 00:42:29


La franja horaria es GMT +2. Ahora son las 13:14:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi