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

aliila1

Member
فرستادن عدد به mmb فقط ارسال عدد
فرستادن متن به mmb فقط ارسال متن
گرفتن عدد از mmb و محاسبه ریاضی جمع و تفریق و ضرب و تقسیم ..... و ریختن تو مقداری که آماده فرستادن به mmb باشه


procedure
jame();
begin
NumOutput:=NumInput[2]+NumInput[1];

end;

procedure
menha();
begin
NumOutput:=NumInput[2]-NumInput[1];

end;

..
..
..

exports
SetFile,GetFile,SetData,GetData,
jame,tghsim,zarb,menha,
Copyright,
GetShortInfo,
GetInfo;

سپس آنرا اكسپورت ميكنيد

دانلود نمونه مثال مربوطه

لازم به ذكر است كه set file ,get file براي فرستادن و گرفتن نوشته به بيلدر استفاده ميشود
وset data, get data براي فرستادن وگرفتن عدد بكار ميرود
در مثال بالا ما فقط عدد را ردوبدل كرديم يعني از

set data, get data استفاده كرديم (4 عمل اصلي جمع تقسيم وضرب ومنهي)http://s6.picofile.com/file/8200029450/sample_4.rar.html
 
آخرین ویرایش:

aliila1

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

آدرس اول انجمن

آدرس دوم
[url]http://forum.majidonline.com/showthread.php?t=151707


[/URL]
 

Singular

Active Member
سلام این نمونه مثال رو نگاه کنید

تموم گفته های شمارو جمع بندی کردم تویه یه مثال

اما یچی حس میکنم خوب متوجه نشدم .. وقتی از SetFile,GetFile,SetData,GetData استفاده میکنیم ..دیگر نمیتونیم از اینا استفاده کنیم..؟؟؟ و مجبوریم شماره گذاری کنیم به ازای هر بار استفاده.... SetFile1,GetFile1,SetData1,GetData1 ....... SetFile2,GetFile2,SetData2,GetData2 یه همچین حالتی .. ؟؟

حال من تووو همین مثال آخر که جمع و تفریق و .... هست به این صورت کار کردم اما پلاگین درست انجام نمیشه.... ولی وقتی همون کد SetFile,GetFile,SetData,GetData توی یه مثال جداگانه انجام میدیم درست انجام میشه

اگر میشه یکم در مورد نحوه این کدها بگید و دلیل این نشدن کارم چی هست؟؟؟


تشکر


 

پیوست ها

  • Delphi.rar
    174 کیلوبایت · بازدیدها: 14

aliila1

Member
سلام
چيزي كه تو پلاگين بيلدر ميتواني دريافت كني فقط همين حالات هستش SetFile,GetFile,SetData,GetData
واين كار جواب نمي دهد SetFile1,GetFile1,SetData1,GetData1 ....... SetFile2,GetFile2,SetData2,GetData2 كاملا غلط است
توبيلدر فقط همون چهار حالت اول در درك ميكند
اگر بخواهي از تعداد زيادي رشته يا نوشته استفاده كني يا تعداددي عدد روش جدا گانه داره

با استفاده از اين حالت رشته TextInput: array [1..5] of string; مي تواني تا 5تا رشته را تو بيلدر فرا خواني كني يعني
TextInput[5] ];
TextInput[4]];
TextInput[3]];
TextInput[1
]];
از اين 5تا براي 5 نوشته ميتوان استفاده كرد

با استفاده از اين حالت رشته NumInput: array [1..5] of Integer; مي تواني تا 5تا عددرا تو بيلدر فرا خواني كني يعني
NumInput[5] := NumInput[4];
NumInput[4] := NumInput[3];
NumInput[3] := NumInput[2];
NumInput[2] := NumInput[1];
NumInput[1] := nData;

حالا علت اينكه عدد ها رشته ها را پشت سر هم و مساوي با هم در setdata قرار داديم اينست كه
همه آنها پشت سر هم در پلا گين فرا خواني شود وبتوانيم در بيلدر مساوي با يك عدد قرار بدهيم

مثلا طبق مثال عددها همون ضرب جمع ... ميبيني كه
عدد اول را NumInput[1] قرار دادم و عدد دوم راNumInput[2] وبعد آنها را جمع وضرب و... انجام داديم ومساوي با NumOutput قرار داديم كه اين عدد بوسيله getdata به بيلدر بر گرانده ميشود وجواب را ميدهد
پس با زياد كردن رشته وعدد در دلفي ميتواني تعداد آنها را در بيلدر زياد كني در صورتي كه همه فقط درsetdata وset file باشد ونياز زياد كردن set data2,3 ياset file2,3 نيست
اينرا تا هر تعداد زياد كني ميتواني از آن استفاده كني NumInput: array [1..5] of Integer يا ياNumInput: array [1..8] of Intege يا NumInput: array [1..33] of Intege

هر كدام را به ترتيب توي بيلدر از بالا به پايين ميتواني استفاده كني هر كدام مساوي با اولين رشته در دلفي است مثلا:
توي بيلدر --- توي دلفي

TextInput[1]=var1$]
TextInput[2]=var2$]
TextInput[3]=var3$]
TextInput[4]=var4$]
TextInput[5]=var5$]



روش دومي وجود داره كه در پلاگين هاي حرفه اي استفاده ميشودكه توي يك رشته بوسيله | فاصله ايجاد ميكنند ودر دلفي آن را وارد پلاگين ميكنند مثلا:
كد mmb
set$='Title|Text|btn|checkbox'
PluginSet("Plugin","set$")
PluginRun("Plugin","MessageBox")


در دلفي جدا سازي ميشود وهر كدام عمل خود را انجام ميدهند
اين روش بسيار كار آمد وراحت است
براي درك مطلب بيشتر به اين آدرس مراجعه كنيد:

انجمن ساخت پلاگين


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

aliila1

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

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

دانلود نمونه 5 مثال پلاگين سازي دلفي
 

Singular

Active Member
[PHPS]function GetArrayItem(const TextIn: String; Car: PChar; const offset: Integer) : String;
var
i,srch: Integer;
begin
for i:=0 to offset do begin
if (i<>offset) then
srch:= PosEx(Car, TextIn+Car,srch+1);
end;
Result:= Copy(TextIn,srch+1,PosEx(Car, TextIn+Car,srch+1)-srch-1);
end;

procedure load; stdcall;
var
a,a1,a2: string;
n: Integer;
begin
[/PHPS]


سلام ممنونم از شما

امکانش هست برای درک بیشتر خط به خط این کد رو توضیح بدید و تو یه خط اصطلاحاتیم هست که نمیدونم رو بگید ....مثلا const یعنی چی .. و............

باز هم ممنون از صبر و شکیبایی شما
 

Singular

Active Member
لینکی که مربوط به نمونه سورس بود کمی پیچیده بود و فایل ام ام بی ضمیمه اش نبود حداقل کارایی پلاگین ببینیم بیشتر درک کنیم.
و نوع کد نویسیشم فرق میکرد..کد ها رو تویه فایلهایی با پسوند pas مینوشتن و فراخوانی میکردن


نمونه مثال کاملی از کل توضیحات شما و یکی از اون لینک ها بود رو یه سورس آماده کردم و تا همین جا موضوع رو درک کردم

امیدوارم مثال هایی بیشتری به اشتراک بزارید تا سطح دانش پلاگین نویسی من و علاقه مندان بالاتر برود.
 

پیوست ها

  • Delphi Singular.rar
    168.6 کیلوبایت · بازدیدها: 10

aliila1

Member
سلام
مثالي كه درست كرده بودي را ديدم ظاهرا مشكلي نداشت
وشما يك مقداري راه افتاديد انشالله موفق باشيد

توضيح كد بالا
var
i,srch: Integer;
اين قسمت را بايد تا حالا درك كرده باشي كه var براي تعريف يك متغيير در اول هر رشته يا عدد نوشته ميشود تا بتوان آ'نرا در ادامه استفاده كرد
Integer براي تعريف عدد بكار ميرود i,srch در اصل دو عدد است
begin
درشروع هر تابع بكار ميرود به معناي استارت است و حتما در پايان تابع هم بايد end; باشد
for i:=0 to offset do begin
اين هم حلقه است كه از 0 شروع تا
offset
ادمه پيدا ميكند كه يك عدد است. do به معناي عمل كردن است . از بيگين تا اند هم پايان آن است

اين فانكشن يعني تابع
GetArrayItem('ali|reza|habibi|','|' ,1 r) اين يعني از بين اين رشته
'ali|reza|habibi|' كه سه تا علامت | را دارد اولين مورد را تا اولين علامت جدا كن ونشان بده
عدد يك در انتهاي آن بيانگر اينست كه اولين علامت | را ظاهر كن آنچه نمايش مي دهد اينست 'ali'
اگر عدد دو بگذاري 'reza' را نمايش مي دهد

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

Singular

Active Member
ممنون آقا علی از توضیحاتی که دادید
اگر کمی راه افتادم تو پلاگین نویسی بیلدر... زحمت و لطف شما بود از صفر شروع و آشنایی در مورد مباحث دادید.


در مورد این توضیحی که دادید اینارو بلدم منظورم بیشتر روی این دو خط بود متوجه معنی این دو خط نشدم

[PHPS]function GetArrayItem(const TextIn: String; Car: PChar; const offset: Integer) : String;


Result:= Copy(TextIn,srch+1,PosEx(Car, TextIn+Car,srch+1)-srch-1);


[/PHPS]

و اینکه کار دستور for اینجا چیه...هدف از گذاشتن دستور for چی بود..چیکار میخواد بکنه؟؟
 

aliila1

Member
سلام
function تابعي است كه براي شروع دستورالعمل بكار ميرود
GetArrayItem نام تابع ساخت خودمونه هرچيزي مي تواني بگذاري
const TextIn: String (اوليش يك ثابت است (const) بعدي نام يك رشته است وstring پسوند ي براي تعريف رشته است
const offset: Integer يك عدد ثابت است به نام offset
) : String; در انتهاكل تابع مارا تبديل به يك رشته كرده است تا بتوانيم در جايي ديگر كه مي خواهيم استفاده كنيد بتوانيم مساوي با يك رشته ديگر قرار دهيم
var a1: string
a1:=GetArrayItem('ali|reza|habibi|','|' ,1 r) ;

///////////////////////////////////////////////
Result:= Copy(TextIn,srch+1,PosEx(Car, TextIn+Car,srch+1)-srch-1);Result:= نتيجه تابع را نمايش مي دهد

copy عمل كپي كردن را انجام ميدهد به اين صورت كهTextIn كه رشته اصلي است داخل اين رشته يكي يكي از كاراكترها(حروف) رابرسي ميكندتا به كاراكتر مورد نظر برسد
كه اين كاراكتردر اينجا اين علامت است || وقتي به اين ميرسد تا اينجا كلمه را كپي مي كند و آنرا نمايش ميدهد

اين مثال را كپي كنيد تو ي دلفي واجراكنيد تا دستتون بياد كارش چطوره
var
Source, Target : string;

begin
Source := '12345678';
Target := Copy(Source, 3, 4);
ShowMessage('Target : '+Target);
end;
اين كد راميتواني داخل يك دكمه قرار بدي انشالله كه بلدي.
توضيح بيشتر:
. تابع Copy :
این تابع مقدار مشخصی از یک رشته را برمی گرداند ... ( خروجی این تابع یک مقدار String است )
این تابع 3 پارامتر دارد :

  • S : مقدار رشته اصلی
  • Index : نقطه شروع کپی برداری
  • Count : تعداد حروف برای کپی برداری

مثال :
فرض میکنیم رشته ای با مقدار " Mahmood " داریم و میخواهیم ، مقدار Mahm را از این رشته انتخاب نموده و در یک متغیر قرار دهیم ...
برای این کار تابع Copy را به صورت زیر به کار می بریم :
1Copy('Mahmood', 1, 4);



همانطور که مشخص است ، در این تابع نقطه شروع کپی برداری برابر با 1 یعنی حرف M و تعداد حروف برای کپی برداری هم برابر با 4 است که حروف تا حرف " m " کپی می شوند ...
توجه کنید که برای گرفتن رشته حاصل از این تابع باید یک متغیر را برابر با آن قرار دهید ، مثال :
1S := Copy('Mahmood', 1, 4);



در کد بالا S یک متغیر String است و مقدار "Mahm" را خواهد گرفت ...

2. تابع Pos :
این تابع موقعیت یک حرف ( یا یک رشته کوچک ) در یک رشته را مشخص مینماید ... ( خروجی این تابع یک مقدار Integer است )
این تابع 2 پارامتر دارد :

  • Substr : مقدار حرف یا رشته ای که قصد فهمیدن موقعیت آن را داریم
  • S : مقدار رشته ای که حرف یا رشته ما در آن وجود داشته و باید موقعیت حرف مورد نظر ما در آن مشخص شود

توجه :

  • منظور از موقعیت این است که مثلا حرف مورد نظر ما چندمین حرف رشته اصلی است
  • اگر حرف مورد نظر ما در رشته اصلی موجود نباشد ، این تابع مقدار 0 را برمی گرداند

مثال :
فرض کنیم که میخواهیم بفهمیم در رشته ای با مقدار " Mahmood " حرف " a " چندمین حرف است ...
بدین منظور تابع Pos را به صورت زیر به کار می بریم :
1Pos('a', 'Mahmood');

فقط يك نكته آنهم اينكه ايني كه اينجا استفتده شده posex هستش كه تفاوت كوچيك با pos به تنهايي داره اينكه توي posex شروع وپايان داره ولي توي pos فقط شروع ويك عددي است
محل یه رشته رو تو رشته دیگه بر مي گردونه و از ابتدای رشته نمي گرده بلکه از محل خاصی مثلا کارکتر دوم به بعد بگرده
اينم به خاطر اينست كه اگر يكبار به اولين كاراكتر علامت | مرسد ومي خواهد ادامه پيدا كند بقيه را پيدا كند دباره نرود از ابتدا بگردد بلكه همان بقيه حروف را ادمه دهد تا به پايان برسد
در غير اين صورت يعني اگر اين اتفاق نيفد فقط رشته اول را پيدا مي كند وبقيه را درك نميكند باز دباره كه for كه از اول شروع مي شود دباره همان كلمه اول را پيدا مي كند وپيشرفت نميكند

و اینکه کار دستور for اینجا چیه...هدف از گذاشتن دستور for چی بود..چیکار میخواد بکنه؟؟

دليل گذاشتن for اينست كه چون ما چندتا از اين علامت را داريم |reza|habibi|ali| و ما بين هر كدام از اين علامتها يك كلمه داريم به صورت رشته لذا داخل for بايد تمام حروف را بررسي كند تا به عدد مورد نظر برسد مثلا پايان for عدد 3 است
در اين صورت تا زماني كه به سومين علامت | | نرسد حلقه يfor ادامه پيدا ميكند تا سومين علامت را پيدا كند و زماني آنراكه پيدا كرد فقط همان رشته سوم را كپي مي كند
و در نتيجه Result ذخيره ميشود تارشته اي ديگر مورد استفاده قرار گيرد
 
آخرین ویرایش:

Singular

Active Member
تشکر از زحمات شما aliila1

مدتی نبودم.



امکانش هست ؟؟؟

کار با دستورات داس
بدست آوردن موقعیت پوشه های ویندوز..مسه شاخه درایوی که ویندوز نصبه شاخه سیستم 32 و ....
اجرا کد های ام ام بی مستقیم از دلفی
اجرا فایل مستقیم از دلفی
ویرایش فایل مستقیم از دلفی (حذف . تغییر نام .ساخت پوشه و...)


مثال بزارید؟؟

شما و دوستان دیگر اگر اطاعی دارند...در این زمینه نمونه مثالی بزارند .

تشکر از دوستانی که در این تاپیک همیاری میکنند
 

aliila1

Member
سلام دوست عزيز ....از تشكر شما هم بسيار شاد شدم وممنون
سوالات شما يكم مجهوله؟!!!
آياباز كردن پوشه يا شاخه ويندوز و امثالهم به زبان داس باشه يا كد دلفي
واينكه منظورت از اجراي مستقيم چيه دقيقا؟ يعني از داخل خود پلاگين ساخته شده با دلفي؟ يا چيز ديگه؟
يا يك چيز شبيه پلاگينهاي قديمي كه باهاش فولدر وفايل را ميساختند يا باز ميكردند؟.....
يكم توضيح بده

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


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

Singular

Active Member
منظور از پوشه ها حساس ویندوز اینه ...
مسن به آدرس سیستم 32 پوشه ای بسازه
تووو درایوی که ویندوز نصبه فایلی رو پاک کنه و امثال اینااا
هدفم آشنایی با آدرس های ویندوز و نحوه استفاده از آدرس هاست

منظور از مسقیم اینه
خود دلفی چه کدی داره واسه ویرایش فایلها (حذف. ایجاد . تغییر نام و...)

نکته بعدی هم اجرای دستورات داس..توی دلفی چجوری هست..هم بصورت آشکار هم مخفی
توی ام ام بی همچین قابلیتی بود

سوال دگ اینه دلفی چطور میتونه کد های ام ام بی رو از داخل خود دلفی مستقیم اجرا کنه...یعنی کد تو متغییر ریخته نشه .مسن run test1 بزنیم اون کد مربوطه که بهش دادی رو اجرا کنه


در مورد نمونه مثال هم تشکر..ولی خیلی زمان بره و تموم کد هامو باید توی SetObjectParam بزاریم...
 

aliila1

Member
منظور از پوشه ها حساس ویندوز اینه ...
مسن به آدرس سیستم 32 پوشه ای بسازه
تووو درایوی که ویندوز نصبه فایلی رو پاک کنه و امثال اینااا
هدفم آشنایی با آدرس های ویندوز و نحوه استفاده از آدرس هاست

منظور از مسقیم اینه
خود دلفی چه کدی داره واسه ویرایش فایلها (حذف. ایجاد . تغییر نام و...)
بزاریم...

آدرس سیستم 32 پوشه ای بسازه
تووو درایوی که ویندوز نصبه فایلی رو پاک کنه و امثال اینااا
هدفم آشنایی با آدرس های ویندوز و نحوه استفاده از آدرس هاست
خود دلفی واسه ویرایش فایلها (حذف. ایجاد . تغییر نام و...)
دانلود
 

aliila1

Member
اجرای دستورات داس..توی دلفی چجوری هست..هم بصورت آشکار هم مخفی
فقط اجرا هست
WinExec('cmd -c dir', SW_SHOW);
اگه بخواهيد مي توانيد از روش زير استفاده كنيد
uses ..., ShellApi;


// Simple one-liner (ignoring error returns) :
if ShellExecute(0,nil, PChar('"C:\my dir\prog.exe"'),PChar('"C:\somepath\some_doc.ext"'),nil,1) =0 then;

// Execute a Batch File :
if ShellExecute(0,nil, PChar('cmd'),PChar('/c mybatch.bat'),nil,1) =0 then;

// Open a command window in a given folder :
if ShellExecute(0,nil, PChar('cmd'),PChar('/k cd \path'),nil,1) =0 then;

// Open a webpage URL in the default browser using 'start' command (via a brief hidden cmd window) :
if ShellExecute(0,nil, PChar('cmd'),PChar('/c start www.lazarus.freepascal.org/'),nil,0) =0 then;

// or a useful procedure:
procedure RunShellExecute(const prog,params:string);
begin
// ( Handle, nil/'open'/'edit'/'find'/'explore'/'print', // 'open' isn't always needed
// path+prog, params, working folder,
// 0=hide / 1=SW_SHOWNORMAL / 3=max / 7=min) // for SW_ constants : uses ... Windows ...
if ShellExecute(0,'open',PChar(prog),PChar(params),PChar(extractfilepath(prog)),1) >32 then; //success
// return values 0..32 are errors
end;​

يا

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

uses ShellApi, ...;

function RunAsAdmin(const Handle: Hwnd; const Path, Params: string): Boolean;
var
sei: TShellExecuteInfoA;
begin
FillChar(sei, SizeOf(sei), 0);
sei.cbSize := SizeOf(sei);
sei.Wnd := Handle;
sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
sei.lpVerb := 'runas';
sei.lpFile := PAnsiChar(Path);
sei.lpParameters := PAnsiChar(Params);
sei.nShow := SW_SHOWNORMAL;
Result := ShellExecuteExA(@sei);
end;
يا



procedure TFormMain.RunAddOrRemoveApplication;
begin
// Example that uses elevated rundll to open the Control Panel to Programs and features
RunAsAdmin(FormMain.Handle, 'rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl', '');
end;

از اين كدها به هر روشي بخواهي مي تواني استفاده كني

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

Singular

Active Member
اگر مثال بزنید ممنون میشم
از این 3 روشی که توضیح دادید

دوست داشتم متوجه بشم واستون زحمت مثال نزارم ولی ... :sad:
 

aliila1

Member
اگر مثال بزنید ممنون میشم
از این 3 روشی که توضیح دادید

دوست داشتم متوجه بشم واستون زحمت مثال نزارم ولی ... :sad:


سلام بازم ممنون از تشكر شما (زكات علم آموختن آنست) اگر چه من چيزي بلد نيستم در كنار بعضي ها

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

ShellExecute(0,nil, PChar('cmd'),PChar('/c "اينجا محل نوشتن كد شماست "'),nil,0)


دانلود



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

aliila1

Member
موضوع جديد در رابطه با اجراي كد تو دلفي وبيلدر

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

دانلود
 

Singular

Active Member
سلام

ما برای اینکه کل متغییر ها را با جدا سازی توسط | یبار به پلاگین بفرستیم

این کد میزدیم

[PHPS]function GetArrayItem(const TextIn: String; Car: PChar; const offset: Integer) : String;
var
i,srch: Integer;
begin
for i:=0 to offset do begin
if (i<>offset) then
srch:= PosEx(Car, TextIn+Car,srch+1);
end;
Result:= Copy(TextIn,srch+1,PosEx(Car, TextIn+Car,srch+1)-srch-1);
///MessageBox(0,PChar(Result),'By Singular title',0);

/// ShowMessage('Target : '+TextOutput);
end;[/PHPS]



و در ادامه برای جداسازی آن متغییر میومدیم این کد میزدیم
[PHPS]procedure load1; stdcall;
begin
TextInput[2]:=GetArrayItem(TextInput[1],'|',1);
TextInput[3]:=GetArrayItem(TextInput[1],'|',2);
TextInput[4]:=GetArrayItem(TextInput[1],'|',3);
end;
[/PHPS]


در این کد بالا ما اومدیم دونه دونه از این کد استفاده کردیم
[PHPS] TextInput[2]:=GetArrayItem(TextInput[1],'|',1);[/PHPS]

چطور میشه از تعداد اون متغییری که از ام ام بی میگیریم مشخص بشه ..مثلا در کد بالا 3 تا خط به منظور جدا سازی داریم

و چطوری اونو توی دستور For بیاریم i یعنی از اون 1 میگریه تا 3 و توی یه متغییر جدا بریزه

[PHPS]

for i:=0 to offset do begin
TextInput[2]:=GetArrayItem(TextInput[1],'|',i);[/PHPS]
 

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

بالا