PDA

View Full Version : کمپایل کردن برنامه بدون نصب کردن کامپوننتها



nasr
سه شنبه 20 شهریور 1386, 08:31 صبح
سلام
آیا میشه یه برنامه را که در آن از یک سری کامپوننتها استفاده شده و حالا اون
کامپننتها نصب نیستند را فقط یک سری تغییرات در برنامه اعمال کرد و دوباره کمپایل
کرد؟
مثلا من یک برنامه را روی یک سیستمی نوشته ام که کامپوننها همه روی این سیستم نصب
هستند
حالا روی یک سیستم دیگه می خوام فقط چند خط از برنامه را تغییر بدم که اون سیستم
کامپوننها را نداره.
آیا روشی وجود داره؟

ممنون

Touska
سه شنبه 20 شهریور 1386, 08:36 صبح
اگر فرمهایی را که میخواهی تغییر بدی توش از این کامپوننت استفاده نکرده باشی
و دلفی بتونه فایل Dcu رو باز هم کامپایل کنه.

مشکل حله

Valadi
سه شنبه 20 شهریور 1386, 08:46 صبح
دوست خوبم آقای احدی
یک کامپیایلر بدون نیاز به دلفی در سایت قرار داده شاید به درد بخوره
در این بخش http://barnamenevis.org/forum/showthread.php?t=46347

Will_Smith
سه شنبه 20 شهریور 1386, 10:19 صبح
اگه یونیت ها ی کامپوننت ها رو توی مسیر LIB دلفی داشته باشید میتونید اونها رو کامپال کنید بدون اینکه دلفی اخطاری به شما بده وبگه این کامپوننت نصب نیست

hossein taghi zadeh
سه شنبه 20 شهریور 1386, 11:44 صبح
با سلام

تنها راه این هستش که تمام کامپوننت‌های که نصب نیستند رو به صورت پویا ایجاد کنید و در ضمن سورس یا یونیت‌های کامپایل شده (فایل‌های DCU) کامپوننت‌ها، کنار فایل اجرایی‌تون باشه.

برای مثال: این یونیت


Unit UMain;

Interface

Uses
Windows, SysUtils, Classes, Controls, Forms, StdCtrls, Mask, ActnList, SolarCalendarPackage;

Type
TfrmMain = Class(TForm)
lstAction: TActionList;
aClose: TAction;
pnlSolarCalendar: TSolarMonthCalendar;
Procedure aCloseExecute(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
End;

Var
frmMain: TfrmMain;

Implementation

{$R *.dfm}


Procedure TfrmMain.aCloseExecute(Sender: TObject);
Begin
// Close this software
Close;
End;

End.

تبدیل می‌شه به:


Unit UMain;

Interface

Uses
Windows, SysUtils, Classes, Controls, Forms, StdCtrls, Mask, ActnList, SolarCalendarPackage;

Type
TfrmMain = Class(TForm)
lstAction: TActionList;
aClose: TAction;
Procedure aCloseExecute(Sender: TObject);
Procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
pnlSolarCalendar: TSolarMonthCalendar;
End;

Var
frmMain: TfrmMain;

Implementation

{$R *.dfm}

Procedure TfrmMain.aCloseExecute(Sender: TObject);
Begin
// Close this software
Close;
End;

Procedure TfrmMain.FormCreate(Sender: TObject);
Begin
// Dynamic Create objects
pnlSolarCalendar := TSolarMonthCalendar(Self);
With pnlSolarCalendar Do
Begin
pnlSolarCalendar.Parent := Self;
Left := 10;
Top := 10;
OnClick := aCloseExecute;
//other properties
End;
End;

End.

در ضمن فایل dfm هم باید تغیر کنه و کامپوننت‌هایی که پویا ایجاد کردیم رو باید از اون حذف کنیم.