ساخت پلاگين بيلدر

aliila1

Member
با سلام خدمت دوستان عزيز مطلب در اين مورد زياد هستش
ولي دوست داشتم يكسري مطلب هم بنده بزارم
يراي دوستاني كه علاقه دارند پلاگين براي بيلدر بسازند
اولين نكته اينكه بيلدر براي كساني كه زياد با برنامه نويسي بلد نيستن خوبه لاكن اگر كسي برنامه نويسي بيلدر را بلد باشه
تا حدي برنامه نويسي بلد هستش
واينكه اگر كسي برنامه هاي ديگر را بلد باشه ديگر نياز زيادي به بيلدر نداره
لذا دوست داشتم با گفتن اين مطلب هم كمكي كرده باشم وهم دوستان را با برنامه هاي ديگر برنامه نويسي آشنا كنم
البته اينرا هم بگم من كوچيك تمام دوستان برنامه نويسم هستيم به
عنوان يك عضو كوچيك خواستم يك كاري بكنم پس شروع ميكنيم:
به عنوان اولين مطلب اينكه پلاگين هاي بيلدر با نرم افزار دلفي نوشته ميشود
1) پس بايد برنامه دلفي را داشته باشيد
2) خود بيلدر را همكه بايد باشه
3) يك كم كد نويسي
براي دانلود دلفي يك سرچ بزني دلفي را دانلود كنيد
لطفا دلفي 7 را سرچ كنيد 1) چون من با اون كار ميكنم 2) بهترين ورژن وكم ارور ترين ورژن ميباشد و كار باهاش راحتره 3)زياد فرقي نداره مهم كد نويسي هستش
يك نكته ديگه اينكه فايلهاي dll كه همون فرمت پلاگينه را ميتوانيد در برنامه هاي ديگر حتي به زبان برنامه نويسي ديگه استفاده كرد انشالله خواهم گفت
 

aliila1

Member
براي كسايي كه سرعت پايين دارن
تو اين آدرس كم حجم شدش هستش
ميتوانيد دانلود كنيد
فقط يك نكته اينكه نسخه هاي بالاتري از موجود است
ولي براي پلاگين نويسي بيلدر يامقدمات از اين نسخه شروع كنيد ساده تره
بعد كه ياد گرفتي خودتون ميتوانيد نسخه هاي بعدي را ياد بگيريد ولي كليت كار يكي است
دانلود با حجم 76 مگا بايت كم حجم شده


https://rasekhoon.net/software/down...بسیار-کم-Delphi-7-Lite-Full-Edition-v7-3-4-2/ دلفيdelphi 7
 
آخرین ویرایش:

aliila1

Member
پس از دانلود ونصب نرم افزار كه تو اين نسخه ها خيلي راحته
دلفي را باز ميكنيم
براي راحت شدن وسرعت در كار ياد گيري من مراحل اوليه ساخت يك پلاگين را
به صورت تصويري در دلفي 7 قرار دادم تا حتي افراد ي كه برنامه نويسي بلد نيستند راحت ياد بگيرند
مراحل را طبق تصوير به ترتيب انجام دهيد تا مرحله آخر:

attachment.php

پس از انجام اين مراحل ميرويم سراغ برنامه نويس
 

پیوست ها

  • dll_test.jpg
    dll_test.jpg
    110 کیلوبایت · بازدیدها: 80

aliila1

Member
در مرحله بعد براي درك بهتر يك نكته اينكه توي بيلدر وقتي روي پلاگين كليك ميكنيد
مشخصات پلاگين را ميتوانيد ببينيد مثلا سال ساخت وكپي رايت و ورژن وغيره ...
مثل تصوير زير:

attachment.php


براي وارد كردن اطلاعات به اين قسمت حالت خاصي داره كه هميشه شبيه اند
 

aliila1

Member
البته مي دونم يكسري آموزش تو انجمن هستش انشالله از همونها هم كمك ميگيريم تا در هزينه ووقت صرفه جويي بشه
هدف ماپيشرفت بيشتر دوستان در برنامه نويسي است واينكه سوق پيدا كنند به برنامه نويسي وكد نويسي حرفه اي (با كمك هم)
dll مخفف Dynamic Link Library است يعني کتابخانه پیوندی پویا كه قابل فرستادن وگرفتن اطلاعات در همان زمان است
بريم سراغ كد نويسي
شما بعد از مراحل بالا با چنين كدي روبرو هستيد كه با زدن دكمه ران (همون فلش سبز رنگ) فايل dll ساخته ميشود لكن
كدي در آن نيست تا قابل گرفتن باشد لذا يك كد كوچيك براي شما ميگذارم
تا با نحوه عملكرد آن آشنا بشويد


library test_dll;
uses
SysUtils,
Classes
,Dialogs;

{$R *.res}

procedure test; cdecl;
begin
ShowMessage('Helo dostm');

end;
///////////////////////////////////////////////////////////////

exports
test;


begin
end.
قسمت قرمز رنگ را ما اضافه كرديم توضيح مطلب اينكه:
ما بين بيگين begin و end يك پيام فرستاديم به نام سلام دوستان ShowMessage('Helo dostm');
در قسمت آخر exports test; را گذاشتيم كه با اجراي آن در بيلدر پيام بدهد

exports اكسپورت در مقابل ايمپورت است صادر كردن يا فرستادن در مقابل وارد كردن يا گرفتن
اگر تابع خروجي را در اين قسمت نگذاريد بعد نمي توان آن رادر بيلدر لود و ران كرد
test نام تابع خروجي است كه مي خواهيم اجرا شود
حالا دكمه فلش سبز يعني ران را ميزنيم وفايل dll در كنار فايل هاي دلفي كه در تصوير سيو كرديم ساخته ميشود فولدرTEST_CODE
تا اينجا پلاگين ساخته شده همراه كد مرتبط.
ميريم سراغ بيلدر يك پروژه جديد در بيلدر باز ميكنيم و يك دكمه مي سازيم
1)ودر قسمت كد نويسي دكمه اين كد را وارد مي كنيم : PluginRun("PlugIn","test")
كلمه تست همان نام تابعي بود كه قبلا به اينجا اكسپورت كرديم
2) يك پلاگين در بيلدر مي سازيم دو بار روي آن كليك كنيد و به قسمت Plug In دكمه اي كه سه تا نقطه داره را كليك كنيد وبه جايي كه فايل dll ذخيره شده ميرويم وآنرا انتخاب كنيد وok را بزنيد
3) حالا run كنيد ودكمه را بفشاريد ميبنيد كه پيام نوشته شده در دلفي اينجا ظاهر ميشود
كار ما تمام شد سوالي داريد بپرسيد

فايل كامل شده را براي دانلود گذاشتم تا اگ جايي را متوجه نشديد از روي آن متوجه بشويد

دانلود مثال اول
 
آخرین ویرایش:

amin2dpr

Well-Known Member
aliila1 عزیز کار شما قابل تقدیره و جان تازه ای به این فروم میده و دوستانو با دنیای برنامه نویسی بیشتر آشنا میکنه
اگه ادامه پیدا کنه خیلی هم خوبه و مطمئنن مطلبی درباره پلاگین نویسی در این فروم در این سطح وجود نداره
 

Singular

Active Member
چرا فایل ضمیمه شده حاوی کدی نیست که توشیح دادید نیست؟؟؟

نمونه مثال با mmb درسته..ولی سورس دلفی کدی نداره...و طبق توضیحی که شما دادید من کد وارد کردم ارور داد


من از لینک دانلود برنامه دلفی 7 این لینک دانلود کردم برنامه رو

و کد رجستری برنامه رو موقع نصب وارد کردم..ولی موقع اجرا هم نشون میده که رجیستر نشده...!!!!!!!!


مشکل کجاست؟


attachment.php


attachment.php
 

پیوست ها

  • Singular32.jpg
    Singular32.jpg
    136.9 کیلوبایت · بازدیدها: 71
  • Singular33.jpg
    Singular33.jpg
    140.2 کیلوبایت · بازدیدها: 69

aliila1

Member
قسمت دوم آموزش
اولين نكته در اين قسمت اينه كه بدانيم براي فرستادن اطلاعات به بيلدر ما نياز به تابع كمكي داريم
دوم اينكه ما هم از داخل بيلدر مي خواهيم پيام به فايل dll بدهيم وهم مي خواهيم آنرا پس بگيريم
براي درك مطلب اين مثال را توجه كنيد شبيه زماني كه روبري كوه مي ايستيد و صدا ميكنيد صداي شما باز گشت مي كند وجواب شما را ميدهد
پلاگين نقش كوه مقابل شما را دارد شما يك چيزي را صدا ميكنيد و پلاگين پاسخ آنرا ميدهد پس يكسري كد نياز داريم كه اين اعمال را انجام دهد
1) در بيلدر خودش كد مورد نظر براي فرستادن نياز شما را با PluginSet("PlugIn","g$") انجام ميدهد
2) دوم فعال كردن تابع مورد نظر PluginSet("PlugIn","g$") است
3) گرفتن آنچه جواب از پلاگين آمده( پس گرفتن جواب) PluginGet("PlugIn","GetFile$") است
اينها بيلدر بود كه حتما بلد بوديد
اما در دلفي بايد چند خط كد بنويسيم
براي شروع بايد بدانيم
گاهي يكسري عدد بايد رد بدل بشه وگاهي يكسري نوشته
لذا كد هر كدام جدا گانه هستش
براي فرستادن عدد از تابع data استفاده ميشود يعني set data براي فرستادن از dll به بيلدرو get data براي گرفتن از بيلدر.
براي رد وبدل كردن نوشته از GetFile,وSetFile و استفاده ميشود
من تابع ها را مينويسم تا بهتر متوجه بشيد
procedure SetFile(txt: pChar); cdecl;
begin
TextInput[1] := txt;
end;

function GetFile: pChar; cdecl;
begin
Result := pChar(TextInput[1]);
end;

عددها با
procedure SetData(nData: Integer); cdecl;
begin
NumInput[1] := nData;
end;

function GetData: Integer; cdecl;
begin
Result := NumOutput;
end;
بعد همه اينها را بايد اكسپورت كرد مثل همان تابع تست در درس قبلي
اينطوري SetFile,GetFile,SetData,GetData Exports


براي متوجه شدن مطلب روي مثال بگمدر ادامه همون پروژه قبلي قسمتهاي كد قرمز رنگ را به پروژه خود اضافه كنيد

uses
SysUtils,
Classes
,Dialogs;
{$R *.res}
var
g : string;

procedure SetFile (s: PChar); cdecl;
begin
g := s;
end;

function GetFile: PChar; cdecl;
begin
result := PChar(g);
end;

procedure test; cdecl;
begin
g:=g+ '_Ali reza habibi';
end;

///////////////////////////////////////////////////////////////

exports
test,SetFile ,GetFile;

begin
end.
وران را بزنيد وdll را داخل بيلدر لود كنيد وعلاوه بر يك دكمه يك EditBox هم به صفحه اضافه كنيدوكد زيررا به به دكمه بيلدر اضافه كنيد

g$=EditBox $
PluginSet("PlugIn","g$")
PluginRun("PlugIn","test")
PluginGet("PlugIn","GetFile$")
**Message("You","GetFile$")
LoadText("EditBox","GetFile$")
توضيح مطلب g$=EditBox$ PluginSet("PlugIn","g$") هر نوشته اي در اديت بوكس بنويسيد به پلاگين ميرود وبا نوشته ي داخل پلاگين _Ali reza habibi
جمع ميشود وبرميگردد به اديت بوكس ونمايان ميشود كه PluginGet آنرا بر ميگرداند شما متن را مي توانيد هر گونه بخواهيد تغيير بدهي





آنرا اجرا كنيد ونتيجه را ببينيد
فايل كامل شده را براي دانلود گذاشتم تا اگر جايي را متوجه نشديد از روي آن متوجه بشويد

دانلود مثال دوم


 
آخرین ویرایش:

aliila1

Member
چرا فایل ضمیمه شده حاوی کدی نیست که توشیح دادید نیست؟؟؟

نمونه مثال با mmb درسته..ولی سورس دلفی کدی نداره...و طبق توضیحی که شما دادید من کد وارد کردم ارور داد


من از لینک دانلود برنامه دلفی 7 این لینک دانلود کردم برنامه رو

و کد رجستری برنامه رو موقع نصب وارد کردم..ولی موقع اجرا هم نشون میده که رجیستر نشده...!!!!!!!!


مشکل کجاست؟

سلام دوست عزيز
اروري كه به شما ميدهد به خاطر اينكه تمام قسمت هاي قرمز رنگ را وارد كدها نكرديد
مخصوصا اينجا را

library test_dll;
uses
SysUtils,
Classes
,Dialogs;​
اين ديالوگ كتابخانه مسيج است كه الان نيازش داريم
با وارد كردن آن مشكل ازبين ميرود
 

Singular

Active Member
سلام دوست عزيز
اروري كه به شما ميدهد به خاطر اينكه تمام قسمت هاي قرمز رنگ را وارد كدها نكرديد
مخصوصا اينجا را

library test_dll;
uses
SysUtils,
Classes
,Dialogs;
اين ديالوگ كتابخانه مسيج است كه الان نيازش داريم
با وارد كردن آن مشكل ازبين ميرود


درسته یک مشکل ,Dialogs; بود
ولی ی مشکل دگ این بود که ; که بعد Classes باید حذف میکردیم چون آخر ,Dialogs زدیم



درسته؟؟؟ این علامت ; بعد از آخرین نوشته میزاریم؟؟؟
 

Singular

Active Member
سلام به دوست عزیز آقای aliila1 بزرگواری کردید همچین آموزشی در این انجمن برای ما گذاشتید.

مواردی هست که تمایل به یادگیری دارم در زیر نوشتم

البته شما درس خودتونو پیش برید . در بین درس ها به این موارد هم اشاره کنید ممنون میشم.




فرستادن عدد به MMB فقط ارسال عدد
فرستادن متن به MMB فقط ارسال متن
گرفتن عدد از MMB و محاسبه ریاضی جمع و تفریق و ضرب و تقسیم ..... و ریختن تو مقداری که آماده فرستادن به MMB باشه
اجرای دستورات CMD به صورت هیدن و غیر هیدن
ارتباط با رجستری بصورت مستقیم در خود دلفی
ارتباط با رجستری بصورت گرفتن مقدار از MMB و با توجه به مقدار اعمال تغیری مربوطه را انجام دهد
پاک کردن.تغییر نام.ساخت پوشه.در ویندوز تحت دلفی باتوجه به دستورات دلفی باشد. دستورات CMD نباشد
کار با دستور For & If در دلفی
آدرس های سیستمی در دلفی... مثل آدرس محلی که ویندوز نصب است و....


در MMB

[PHPS]Test1$='SLM1'
Test2$='SLM2'
Test3$='SLM3'
TestKol$=Test1$+'-'+Test2$+'-'+Test3$
************************************** natije = SLM1-SLM2-SLM3
**////////
**////////
**////////
**////////
Test1=3
Test2=5
Test3=8
TestKol=Test1+Test2+Test3
************************************** natije = 16

[/PHPS]

در دلفی به چه شکلی هست؟
 
آخرین ویرایش:

aliila1

Member
سلام دوباره
Copyright © 2015 و ورژن وايميل وامثال اينها را ميتوانيد
به وسيله تابع هاي زير اضافه كنيد


function Copyright(): PChar; cdecl;
begin
result := 'Copyright © 2015 free ';
end;


function GetShortInfo(): PChar; cdecl;
begin
result := 'TEST plugin ';
end;

function GetInfo(): PChar; cdecl;
begin
result := 'TEST v1.0' + #13#10 +
'Programmer & Author: Ali Reza Habibi' + #13#10 +
'please visit us at' + #13#10 +
'E-Mail: [email protected] ' + #13#10 +
'www.3dmy.mihanblog.com';
end;
البته بايد اكسپورت شوند

دانلود مثال از زير

دانلود مثال سوم
 

aliila1

Member

فرستادن عدد به MMB فقط ارسال عدد
فرستادن متن به MMB فقط ارسال متن
گرفتن عدد از MMB و محاسبه ریاضی جمع و تفریق و ضرب و تقسیم ..... و ریختن تو مقداری که آماده فرستادن به MMB باشه
اجرای دستورات CMD به صورت هیدن و غیر هیدن
ارتباط با رجستری بصورت مستقیم در خود دلفی
ارتباط با رجستری بصورت گرفتن مقدار از MMB و با توجه به مقدار اعمال تغیری مربوطه را انجام دهد
پاک کردن.تغییر نام.ساخت پوشه.در ویندوز تحت دلفی باتوجه به دستورات دلفی باشد. دستورات CMD نباشد
کار با دستور For & If در دلفی
آدرس های سیستمی در دلفی... مثل آدرس محلی که ویندوز نصب است و....


توجواب دوتا سوال اول: توي آموزش دوم بيان كردم ونوشتم توي مثالي كه گذاشتم واضح هستش يك نوشته شما ميفرستيد وبعد با نوشته داخل پلاگين جمع ميشود وجمع هر دو دوباره
به اديت تكست تو بيلدر باز ميگردد اگه نفهميدي بگو توضيح بدم

کار با دستور For & If در دلفی
i: integer;
عدد ها با اينتگر مشخص ميشود
for i := 1 to n do
begin
code
......كدنوشته ميشود
end;
هميشه بايد دستورات داخل بيگين واند باشد
Text: string;
نوشته ها را با استرينگ يعني رشته مشخص ميشود
if text='ali reza' then
begin
code..... كدنوشته ميشود
end;

محاسبه تودلفي مثل همه جا ديگه هستش
يك مثال برات ميزارم انشالله

دانلود فايل براي يكسري سوالات در دلفي
 
آخرین ویرایش:

Singular

Active Member
آره تو مثالی که زدید بود
ولی مثال از mmb هم گرفت

اما من اومدم با اون مثال ها کلی ور رفتم هر کاری کردم نتونستم انجام بدم سوالاتی که کردم..

مرسی از زحمتتون.
 

Singular

Active Member
سلام دوباره
Copyright © 2015 و ورژن وايميل وامثال اينها را ميتوانيد

البته بايد اكسپورت شوند


اکسپورت کجاست؟؟؟
ممن کد رو تو برنامم گذاشتم ولی اکسپورت نمیدونم کجاست..به همین دلیل احتمالا نشون نمیده...



------------------------------------------------------------------------------------------------
تو بیلدر

[PHPS]pm$='salam khobi'
MessageEx("","pm$")[/PHPS]


داخل pm$ متنمونو مینوشتیم و داخل پیامم یا جاهای دگ Pm$ فقط میزاشتیم
[PHPS]var
Pm: String;
Pm:='slm khobi'

////////////////////////////////////////////
////////////////////////////////////////////
procedure test3; cdecl;
begin
ShowMessage('pm');
end;
////////////////////////////////////////////[/PHPS]

توی دلفی چطوریه؟؟
 
آخرین ویرایش:

amin2dpr

Well-Known Member
Singular عزیز هر کدی که نوشتی و به mmb سند میشه حالا چه به صورت رشته ای و چه عددی اگه در انتهای کارت اکسپورت نباشه از کد خروجی (همون فایل) گرفته نمیشه
کد:
[COLOR=#000000][B]var[/B][/COLOR]
Pm[COLOR=#339933]:[/COLOR] String[COLOR=#339933];[/COLOR]
Pm[COLOR=#339933]:=[/COLOR][COLOR=#0000FF]'slm khobi'[/COLOR]
 
[COLOR=#666666][I]////////////////////////////////////////////[/I][/COLOR]
[COLOR=#666666][I]////////////////////////////////////////////[/I][/COLOR]
procedure test3[COLOR=#339933];[/COLOR] cdecl[COLOR=#339933];[/COLOR]
begin
ShowMessage[COLOR=#009900]([/COLOR][COLOR=#0000FF]'pm'[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[URL="http://www.php.net/end"][COLOR=#990000]end[/COLOR][/URL][COLOR=#339933];[/COLOR]
[COLOR=#666666][I]////////////////////////////////////////////[/I][/COLOR]

بعد از end آخر میای اینو می نویسی

کد:
exports
test3;


همه کدایی که نوشتی رو باید وارد کنی مثلا 3 تا کد نوشتیم پس اینجور خروجی می گیریم

کد:
[FONT=Tahoma]exports[/FONT]

test1, test2, test3;


بعد یه خط میای پایین و این کد رو می نویسی که خطای
Declaration expected but end of file found رو بهت نده


کد:
begin
end.
 

Singular

Active Member
[PHPS]var
Pm: String;
pm:='slm khoobi'
////////////////////////////////////////////
////////////////////////////////////////////
procedure test33; cdecl;
begin
ShowMessage('pm');
end;
////////////////////////////////////////////

exports
test33;

begin
end.[/PHPS]


من توسط این کد عمل کردم ولی خط

[PHPS]pm:='slm khoobi'[/PHPS]

ارور میده
 

Singular

Active Member
مشکل اکسپورت کردن تو مثال مربوط Copyright © 2015 حل شد

کم کم دارم درک میکنم قضیه رو :D

exports
Copyright,GetShortInfo,GetInfo;
 

جدیدترین ارسال ها

بالا