مشاهدة النسخة كاملة : Pascal كلغة برمجة نصية Scripting Language
kachwahed
19-05-2011, 08:53 AM
السلام عليكم ورحمة الله
اشتهرت في الآونة الآخيرة لغات البرمجة النصية (أو Scripting Language)
باختصار... لغات البرمجة النصية هي لغات برمجية لا تنتج ملفات تطبيقية وإنما تنفذ على هيئتها النصية
طالع المزيد من Wikipedia (http://en.wikipedia.org/wiki/Scripting_language)
شاع استخدامها لدى المبرمجين في السنوات الأخيرة لسهولة تناقلها وصيانتها إضافة إلى كونها في الغالب مجانية ومفتوحة المصدر
من أمثلتها: Python، Ruby، Perl... وغيرها
نأخذ مثال Ruby
print 'What''s your name?'
name = gets
puts 'Hello '+name
ماذا نحتاج لتنفيذ هذا المثال؟
لن تحتاج إلى أكثر من مترجم Ruby
http://www.ruby-lang.org/en/
حسنا... وماذا عن دلفي؟ هل يمكن تنفيذ ملفات سورس دلفي مباشرة!
وما المانع؟
Pascal Script هو مترجم مجاني أيضا يعتمد على ObjectPascal/Delphi/Lazarus ويدعم مختلف المنصات
http://wiki.lazarus.freepascal.org/Pascal_Script
RemObjects قائمة على مشروع منذ 2001 يستخدم مع بيئة تطوير IDE
http://www.remobjects.com/ps.aspx
هل يمكنني تحويل برامجي إلى Scripts؟
أجل، ومعظم المكونات التي كنت تتعامل معها أيضا، كما يمكنك برمجة تطبيقات GUI واستدعاء DLLs وقواعد البيانات وغيرها... غير أن هناك حدود طبعا.
أي أسئلة حول منتج RemObjects من هنا:
http://wiki.remobjects.com/wiki/Main_Page
هل هناك برنامج يسهل المهمة لتجربة Script Pascal؟
Precision Delphi Script مجاني لحد الآن لأغراض التجربة:
http://www.be-precision.com/products/pdscript/
برمجة نصية ممتعة :)
paix144
20-05-2011, 10:41 PM
السلام عليكم
موضوع جميل أخي
هل ممكن مثال بدلفي إن أمكن؟
و جازك الله كل خير
ELARAPY
21-05-2011, 09:07 AM
بارك الله فيك يا باشمهندس
kachwahed
21-05-2011, 09:33 AM
هل ممكن مثال بدلفي إن أمكن؟
لم أجرب RemObjects لأنه يتطلب التثبيت...
استخدم للتجربة:
http://www.be-precision.com/products/pdscript/
اكتب فيه كود دلفي عادي مثل:
program Test;
begin
writeln('Just for test');
end.
ثم قم بالتنفيذ.
لمن له أي سؤال حول RemObjects أو أحد منتجاتها ينظر في موقعهم:
http://wiki.remobjects.com/wiki/Main_Page
ولهم قناة أيضا:
http://www.remobjects.com/tv/
بالتوفيق.
cargem
21-05-2011, 12:46 PM
Pascal Script Examples
http://wiki.lazarus.freepascal.org/Pascal_Script_Examples
Example of the month (design by contract)
program LottoGeneratorService;
// lotto generator as servicelevel design by contract
// all globals should be eliminated, funcproof is LOTRANGE = 6 and sum of 21!
const LOTNUMB = 6;
LOTRANGE = 45;
type
TLottoList = array[1..LOTNUMB] of byte;
T_Status =(success, failure, pending);
function initArray(var larray: TLottoList): boolean;
var i: byte;
begin
for i:= 1 to LOTNUMB do
larray[i]:= 0;
result:= true
end;
procedure putNumbers(vrange: byte; var larray: TLottoList);
var ti, z, myrand, sum: byte;
dup: boolean;
begin
ti:= 1;
sum:= 0;
Randomize;
//precondition set by validation
if vrange < LOTNUMB then vrange:= 6;
repeat
myrand:= Random(vrange)+ 1;
dup:= false;
for z:= 1 to LOTNUMB do
if (larray[z] = myrand) then dup:= true;
if (not dup) then begin
larray[ti]:= myrand;
ti:= ti + 1;
sum:= sum + myrand
end;
//postcondition & proof
until ti = LOTNUMB + 1
writeln('sum of numbers: ' + intToStr(sum))
end;
procedure viewNumbers(larray: TLottoList);
var i: byte;
begin
for i:= 1 to LOTNUMB do
writeln(inttostr(i) +': '+inttostr(larray[i]))
end;
function startLottoService(lotrange: byte): T_Status;
var larray: TLottoList;
begin
result:= failure;
if initArray(larray) then begin
putNumbers(LOTRANGE, larray)
viewNumbers(larray);
result:= success
end;
end;
// main script
begin
//vlotrange:= strtoint(readln('how great is the range ?'));
if startLottoService(lotrange) = success then
writeln('lotto service get at: ' + Now) else
writeln('bad news from service: ' + Now)
end.
Example of Stream and Store manipulation
//converts a text to a stream in a memo component
//the memo is the output file, loc's =44
program TextfromFile;
procedure stringtofile(acontent, afilename:string);
var fls: TFileStream;
begin
fls:= TFileStream.Create(afilename, fmOpenWrite or fmCreate);
try
// no no acontent[1]
fls.Write(acontent,length(acontent));
finally
fls.Free;
end
end;
function fileToString(afilename: string; var returnString: string): boolean;
var fls: TFileStream;
begin
result:= false;
if not fileExists(afilename) then exit;
fls:= TFileStream.Create(afilename, fmOpenRead or fmShareCompat);
try
if fls.size > 0 then begin
SetLength(returnString, fls.Size);
fls.Read(returnString,fls.Size);
result:= true;
end
finally
fls.Free;
end
end;
//main
var mystring: string;
begin
//clrscr;
if fileToString('readmefirst_maxbox.txt',mystring) then
showmessage(mystring)
//memo2.text:= mystring
end.
Example of procedural OODesign
program OOP_design;
//example with objects and exception handling
//open a file, add a line, save to another file, show the result on the screen
//solution to pas_oodesign5.txt
//shows with .loadFromFile polymorphie
//add a second parameter file 'filename' at last in getFiletoStr(); loc's=57
function getFiletoStr(strObj: TStringList): TStringList;
begin
//strObj.loadfromfile()
result:= strObj;
with result do begin
clear;
loadFromFile('firstdemo.txt');
end
end;
procedure showFileonMemo(myfile: string);
var
Mst: TMemoryStream;
begin
Mst:= TMemoryStream.Create;
try
Mst.LoadFromFile(myfile);
Mst.Seek(0,0);
Memo2.Lines.LoadFromStream(Mst);
finally
Mst.Free;
end;
end;
//main topic
begin
//constructor
with getFileToStr(TStringList.create) do begin
//myFileStr:= getFileToStr(myFilestr);
add('new line in list');
SaveToFile('firstdemo2.txt')
showFileonMemo('firstdemo2.txt');
//destructor
Free;
end
end.
Example of prime number generator) and Beginners Choice
program Primtester_2;
// simple primtester between range for perfomance- and filehandling
// has a function and procedure, no globals, locs = 62
// to teach the function with or without brake shows perfomance!
var
mylist: TStringlist;
beforetime, aftertime: string;
//timedelta: integer;
function checkPrim(acti: integer): boolean;
var
j: Integer;
isprim: boolean;
begin
isprim:= true;
for j:= 2 to round(sqrt(acti)) do
if ((acti mod j) = 0) then begin
isprim:= false
break
end;
result:= isprim;
end;
procedure testPrimNumbers(from_range, to_range: integer);
var acti, count: integer;
begin
count:= 0;
mylist:= TStringlist.create;
for acti:= from_range to to_range do begin
inc(acti)
//writeln('debug count'+inttostr(acti))
if checkprim(acti) then begin
inc(count)
mylist.add(inttostr(count) +':'+inttoStr(acti))
//writeln(inttostr(count) +':'+ inttostr(acti))
end
end
//insert new lines to an existing file-list
{mylist.LoadFromFile('primetest3.txt');}
//add a string to the end of list
{sl.Add('hell\*/bell');}
end;
//main script
begin
//irange:= strtoint(readln('how great is the range ?'));
//check time performance
beforetime:= now;
testPrimNumbers(20, 10000);
aftertime:= now;
writeln('start: '+ beforetime)
writeln('stop: ' + aftertime)
mylist.add(memo2.text)
mylist.savetoFile('primetest7.txt')
memo2.lines.loadfromFile('primetest7.txt')
mylist.free;
//orthogonal and idempotent
end.
kachwahed
21-05-2011, 01:29 PM
maXbox عمل ممتاز قام به Kleiner من ألمانيا باستخدام RemObject
maXbox is a scripter tool with an inbuild delphi engine in one exe! It is designed for teaching, test and analyzing methods and algorithms and runs under Win and Linux (CLX) to build Delphi in a box. mX3 is based on RemObjects Pascal Script, the smart evolution of programming. Now in Version 3.0 with Internet, Net, UseCase, System, Debug and DLL support.
الموقع:
http://www.softwareschule.ch/maxbox.htm
أمثلة:
http://sourceforge.net/projects/maxbox/files/Tutorials/
بارك الله فيك أخي cargem.
louay
21-05-2011, 05:32 PM
هل هي نفسها اللغة (من حيث المبدأ) التي يتعامل معها شركات الهاتف (Avaya-Hwawe-Notel)خصوصا بما يتعلق بإعادة التوجيه Routage وشروطه مع عدة متغيرات مثل الوقت والعدد ؟
vBulletin® , Copyright ©2008-2012