ورود

View Full Version : ایجاد DBEngine با کپی کردن فایلها؟



V60
سه شنبه 30 فروردین 1384, 15:36 عصر
می گم من در یک قسمتی از برنامه ام مجبور هستم از بانکهای پارادوکس استفاده کنم حالا مشکل من مثل همه اینه که چطوری می شه با کپی کردن یک سری از فایلها موتور dbengine که توسط دلفی نصب می شود را بر روی دستگاه مقصد پیاده سازی کنم ، نمی خواهم خودم را درگیر Installshild بکنم و ALIAS مورد نظر را هم توسط کامپوننتهای دلفی در زمان برنامه ایجاد می کنم که نیازی نباشد حالا چی کنم ؟ :sorry:

vcldeveloper
چهارشنبه 31 فروردین 1384, 05:09 صبح
قبلا در همین بخش لیست فایلهای مورد نیاز برای نصب BDE در سیستم کاربر آورده شده بود. الان یادم نیست کجاست، ولی بگردی پیدا می کنی.
در ضمن می تونی یه بار با Installshield این کار رو انجام بدی و ببینی چه فایلهایی رو کپی میکنه.

Delphi-Clinic
چهارشنبه 31 فروردین 1384, 09:28 صبح
سلام

با اجازه استاد کشاورز :)

هسته اصلی BDE یک فایل بنام BDEInst.cab می باشد.
درون فایل مزبور فایلی با پسوند دی ال ال وجود دارد که با رجیستر کردن آن BDE نصب می شود.

اما برخلاف نصب BDE که ساده است نصب Alias اطلاعاتی برنامه نیاز به کد نویسی بیشتری دارد. :)

V60
چهارشنبه 31 فروردین 1384, 09:48 صبح
اساتید محترم
از راهنماییتان متشکر
آقای کشاور باور کنید اول تو سایت کلی جستجو کردم و پیدا نکردم( البته حتما کلمات کلیدی درست نبوده)

درون فایل مزبور فایلی با پسوند دی ال ال وجود دارد که با رجیستر کردن آن BDE نصب می شود.
Delphi-Clinic چگونه این فایل را ریجستر کنم
ببخشید ولی خب ندانستن که عیب نیست ، نپرسیدن عیب است. :oops:

Delphi-Clinic
چهارشنبه 31 فروردین 1384, 11:39 صبح
راه اول


Regsvr32 bdeinst.dll


راه دوم:

استفاده از install shield

راه سوم:

رجیستر کردن با کد:



type
EComRegisterException = class(Exception);
TComRegisterType = (crtRegister, crtUnRegister);

function RegisterComServer(Server: string; RegisterType: TComRegisterType;
IgnoreExceptions: Boolean): Boolean;

procedure _RaiseError(Err: string; Params: array of const);
(* _RaiseError will only raise an error if were
not ignoring exceptions *)
begin
if not IgnoreExceptions then
raise EComRegisterException.CreateFmt(Err, Params);
end;

type
(* This is the function defenition for the register/unregister proc *)
TRegisterProc = function: HRESULT; stdcall;

const
(* error messages *)
sInvalidComFile = '%s'#13#13'Is not a valid COM Server.';
sFailedRegister = 'Failed to Register/UnRegister'#13#13'%s'#13#13 +
'As a COM Server';

(* The exported function names for registering/unregistering *)
sProcNames: array[0..1] of string = ('DllRegisterServer',
'DllUnregisterServer');

var
LibHinst: HINST;
ProcAddr: Pointer;
begin
(* Default result is failed *)
Result := False;

(* Load the COM Server/ACTIVEX etc *)
LibHinst := LoadLibrary(PChar(Server));
try
if LibHinst <> 0 then
begin
(* Find the Register or Unregister procedure *)
ProcAddr := GetProcAddress(LibHinst,
PChar(sProcNames[Ord(RegisterType)]));

(* Check the Register/UnRegister proc is valid *)
if Assigned(ProcAddr) then
begin
if TRegisterProc(ProcAddr) = S_OK then
(* Everything worked set Result to True *)
Result := True
else
(* The COM Server failed to register its self *)
_RaiseError(sFailedRegister, [Server]);
end else
(* Exported Register/Unregister proc not found? *)
_RaiseError(sInvalidComFile, [Server]);
end else
(* not a valid exe/dll *)
_RaiseError(sInvalidComFile, [Server]);
finally
if LibHinst <> 0 then
(* if the com server was loaded then
make sure its unloaded *)
FreeLibrary(LibHinst);
end;
end;


Following is demo code which shows how to call the RegisterComServer function.

const
sFileName = 'D:\Program Files\Orcka\DMV\orckadmv.dll';

procedure TForm1.btnRegisterClick(Sender: TObject);
begin
if RegisterComServer(sFileName, crtRegister, True) then
ShowMessage('Registered ' + sFileName)
else
ShowMessage('Failed to register ' + sFileName);
end;

procedure TForm1.btnUnRegisterClick(Sender: TObject);
begin
if RegisterComServer(sFileName, crtUnRegister, True) then
ShowMessage('UnRegistered ' + sFileName)
else
ShowMessage('Failed to UnRegister ' + sFileName);
end;


فکر کنم کافی باشه. :)

javad_hosseiny
چهارشنبه 31 فروردین 1384, 13:03 عصر
دلفی کلنیک جان دستت درد نکند خیلی وقت بود دنبال این روش سوم (رجیستر کردن توسط کدنویسی بودم) ممنون می شم که اگر یک سوال پاسخ نداده ما رو هم جواب بدی چندی قبل راجع به تغییر regional languauge به کد عربی (در قسمت معرفی زبان یونی کد) سوال کردم دوستان جواب دادند (بصورت معرفی تنظیم از داخل رجیستری) می خواستم کدنویسی مربوط به تغییر این مقادیر از رجیستری را بنویسید
با تشکر

V60
چهارشنبه 31 فروردین 1384, 14:38 عصر
دلفی کلنیک جان دستت درد نکند

امتحان می کنم اگر حل کند که واقعا دستت درد نکند :oops:

javad_hosseiny
پنج شنبه 01 اردیبهشت 1384, 10:50 صبح
khabari nashod?!!