با سلام

من یک کلاس در یک یونیت ایجاد کردم که در زیر می بینید. (با استفاده از XE2)
ابتدا FConnection را به عنوان یک فیلد داخل کلاس تعریف کردم. به خطا خورد، بعد فکر کردم اگر این متغیر را به عنوان سراسری تعریف کنم مشکل حل می شود که متاسفانه نشد.

unit UnitDatabase;

interface
uses
ADODB, db, dialogs, sysutils, classes;

const
DataBaseProvider : array [0..3] of string =
('Provider=Microsoft.Jet.OLEDB.3.51',
'Provider=Microsoft.Jet.OLEDB.4.0',
'Provider=Microsoft.ACE.OLEDB.12.0',
'Provider=SQLOLEDB.1');
type
TdbType = (dbAccess97, dbAccess2003, dbAccess2007, dbSQLServer);
TADODatabase = class
public

FQuery : TADOQuery;
FCommand : TADOCommand;
FDataSet : TADODataSet;
public
constructor Create(AServerName: string; DBType: TdbType = dbAccess2003);
end;
var
FConnection: TADOConnection;
implementation

{ TADODatabase }

constructor TADODatabase.Create(AServerName: string; DBType: TdbType);
begin
inherited Create;
FConnection := TADOConnection.Create(nil);
with FConnection do
begin

ConnectionString := DataBaseProvider[ord(DBType)]+
';DataSource=' + AServerName + ';Persist Security Info=False';
Provider := DataBaseProvider[ord(DBType)];
try
Connected := True;
except
on e: exception do
begin
ShowMessage(e.Message);
end;
end;
end;

end;

end.


حالا زمانی که این کلاس رو به صورت زیر فراخوانی می کنم:

procedure TForm1.Button1Click(Sender: TObject);
var
db: TADODatabase;
begin
db.Create('I:\Projects\92\Namayandegi\db.mdb', dbAccess2003);
end;


خطاهای زیر را نمایش می دهد: خطای دوم را سه با نمایش می دهد.


2.png
1.png
3.png