PDA

View Full Version : آموزش: اجرای vbscript در دلفی



lord_viper
پنج شنبه 08 فروردین 1392, 16:48 عصر
دلفی زبان پرقدرتی میباشد که قابلیت تعامل با اکثر زبانهای برنامه نویسی و اسکریپتی را دارا میباشد یکی از این زبانها vbscript و MSscript و jscriptمیباشد.شما از 2 راه میتوانید این کار را انجام دهید اول به صورت مستقیم با استفاده از نصب اکتیو ایکس microsoft script control که به همراه دلفی وجود دارد دوم به صورت غیر مستقیم با استفاده از توابع com و ole در دلفی .برای این کار از رابط MSScriptControl.ScriptControl استفاده میکنیم این رابط دارای متدهای مختلف برای اجرای کد میباشد


AddCode:اضافه کردن کد یا تابع به اسکریپت کنترل
AddObject:ایجاد یک شیی برای دسترسی برنامه اجرا کننده اسکریپت به آن
Eval:ارزیابی یا محاسبه یک عبارت
ExecuteStatement:فقط 1 درستور را اجرا میکند
Reset:مقدار اغازی دادن یا ریست کردن موتور اسکریپت
Run:اجرای یک تابع
Language:انتخاب نوع زبان اسکریپتی


ابتدا یونیتهای ComObj و ActiveX را uses کنید

مثال1:اجرای یک دستور


procedure TForm1.btn1Click(Sender: TObject);
Var
Sc:Variant;
Res:String;
Begin
Sc:=CreateOleObject('MSScriptControl.ScriptControl ');
Sc.Language:= 'VBScript';
Sc.ExecuteStatement('MsgBox "Hello World!"');
end;


مثال2:محاسبه یک عبارت


procedure TForm1.btn1Click(Sender: TObject);
Var
Sc:Variant;
Res:String;
Begin
Sc:=CreateOleObject('MSScriptControl.ScriptControl ');
Sc.Language:= 'VBScript';
Res:=Sc.Eval('100+5*4');
memo1.Lines.Add(res);
end;


مثال3:اجرای یک روال


procedure TForm1.btn1Click(Sender: TObject);
Var
Sc:Variant;
Res:String;
Begin
Sc:=CreateOleObject('MSScriptControl.ScriptControl ');
Sc.Language:= 'VBScript';
Sc.AddCode('Sub Hello(YourName)'+#13+
'MsgBox "Hello " & YourName'+#13+
'End Sub');
Sc.Run('Hello','lord_viper');
end;


مثال4:اجرای یک تابع و بازگشت مقدار آن


procedure TForm1.btn1Click(Sender: TObject);
Var
Sc:Variant;
Res:String;
Begin
Sc:=CreateOleObject('MSScriptControl.ScriptControl ');
Sc.Language:= 'VBScript';
Sc.AddCode('Function AddTwo(X1, X2)'+#13+
'AddTwo = X1 + X2'+#13+
'End Function');
Caption:=Sc.Run('AddTwo',7,12.5);
end;


مثال5:اجرای مستقیم کد


procedure TForm1.btn1Click(Sender: TObject);
Var
Sc:Variant;
Begin
Sc:=CreateOleObject('MSScriptControl.ScriptControl ');
Sc.Language:= 'VBScript';
Sc.AddCode('strMessage =Inputbox("Enter your message","Input Required")'+#13+
'Set objVoice = CreateObject("SAPI.SpVoice") '#13+
'objVoice.Speak strMessage');
end;