المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
السلام عليكم ورحمة الله
اشتهرت في الآونة الآخيرة لغات البرمجة النصية (أو Scripting Language)
باختصار... لغات البرمجة النصية هي لغات برمجية لا تنتج ملفات تطبيقية وإنما تنفذ على هيئتها النصية
طالع المزيد من Wikipedia
شاع استخدامها لدى المبرمجين في السنوات الأخيرة لسهولة تناقلها وصيانتها إضافة إلى كونها في الغالب مجانية ومفتوحة المصدر
من أمثلتها: Python، Ruby، Perl... وغيرها
نأخذ مثال Ruby
PHP كود :
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/
برمجة نصية ممتعة 
المشاركات : 316
المواضيع 64
:
: 1
الإنتساب : Apr 2009
السلام عليكم
موضوع جميل أخي
هل ممكن مثال بدلفي إن أمكن؟
و جازك الله كل خير
المشاركات : 367
المواضيع 54
:
: 506
الإنتساب : Jan 2011
بارك الله فيك يا باشمهندس
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
إقتباس :هل ممكن مثال بدلفي إن أمكن؟
لم أجرب RemObjects لأنه يتطلب التثبيت...
استخدم للتجربة:
كود :
http://www.be-precision.com/products/pdscript/
اكتب فيه كود دلفي عادي مثل:
PHP كود :
program Test;
begin
writeln('Just for test');
end.
ثم قم بالتنفيذ.
لمن له أي سؤال حول RemObjects أو أحد منتجاتها ينظر في موقعهم:
كود :
http://wiki.remobjects.com/wiki/Main_Page
ولهم قناة أيضا:
كود :
http://www.remobjects.com/tv/
بالتوفيق.
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
21-05-2011, 12:46 PM
(آخر تعديل لهذه المشاركة: 21-05-2011, 01:53 PM بواسطة kachwahed.)
Pascal Script Examples
PHP كود :
http://wiki.lazarus.freepascal.org/Pascal_Script_Examples
Example of the month (design by contract)
PHP كود :
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
PHP كود :
//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
PHP كود :
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
PHP كود :
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.
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
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.
المشاركات : 628
المواضيع 72
:
: 211
الإنتساب : Jun 2010
هل هي نفسها اللغة (من حيث المبدأ) التي يتعامل معها شركات الهاتف (Avaya-Hwawe-Notel)خصوصا بما يتعلق بإعادة التوجيه Routage وشروطه مع عدة متغيرات مثل الوقت والعدد ؟