Pascal كلغة برمجة نصية Scripting Language
#1
السلام عليكم ورحمة الله
اشتهرت في الآونة الآخيرة لغات البرمجة النصية (أو 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/

برمجة نصية ممتعة Smile
#2
السلام عليكم
موضوع جميل أخي
هل ممكن مثال بدلفي إن أمكن؟
و جازك الله كل خير
#3
بارك الله فيك يا باشمهندس
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
#4
إقتباس :هل ممكن مثال بدلفي إن أمكن؟
لم أجرب 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/
بالتوفيق.
#5
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. 
#6
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.
#7
هل هي نفسها اللغة (من حيث المبدأ) التي يتعامل معها شركات الهاتف (Avaya-Hwawe-Notel)خصوصا بما يتعلق بإعادة التوجيه Routage وشروطه مع عدة متغيرات مثل الوقت والعدد ؟


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم