2012-09-10 42 views
13

मैं डेल्फी के लिए एक अच्छा मुफ्त स्क्रिप्टिंग इंजन ढूंढ रहा हूं। मैं एक आवेदन में स्क्रिप्टिंग जोड़ना चाहता हूं ताकि मैं छोटी टेस्ट स्क्रिप्ट लिख सकूं। विशेष रूप से मैं की जरूरत है:क्या डेल्फी के लिए एक अच्छी पटकथा पास्कल जैसी भाषा है?

  • पास्कल की तरह वाक्यविन्यास
  • वर्तमान (मैं RemObjects पास्कल स्क्रिप्टिंग को देखा, लेकिन यह "अप्रचलित" है एक पोस्टिंग मैंने देखा के अनुसार)।

मुझे मूल भाषा समर्थन की आवश्यकता नहीं है, बस मूल बातें। मैंने यह देखा: https://stackoverflow.com/questions/226135/scripting-library-for-delphi लेकिन मुझे लगता है कि चीजें तब से थोड़ी देर में चली गई हैं।

मैं बस इतना करना चाहता हूं कि मेरे प्रोग्राम में एक ज्ञापन घटक जोड़ें, और रन-टाइम पर ज्ञापन में स्रोत का एक टुकड़ा जोड़ें और एक गो बटन पर क्लिक करें। मैं चाहता हूं कि स्क्रिप्ट मेरे एप्लिकेशन के चर और कार्यों तक पहुंचने में सक्षम हो।

इसे पूरा करने का सबसे आसान तरीका क्या है? उदाहरण कार्यक्रम निम्नानुसार है।

program Project31; 

uses 
    Forms, 
    Unit36 in 'Unit36.pas' {Form36}; 

{$R *.res} 

begin 
    Application.Initialize; 
    Application.CreateForm(TForm36, Form36); 
    Application.Run; 
end. 

unit Unit36; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls; 

type 
    TForm36 = class(TForm) 
    Button1: TButton; 
    Memo1: TMemo; 
    procedure Button1Click(Sender: TObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    Form36: TForm36; 

implementation 

{$R *.dfm} 

procedure RoutineInMyApplication ; 

begin 
ShowMessage ('Hello from my Application') ; 
end ; 

procedure TForm36.Button1Click(Sender: TObject); 
begin 
//ExecuteScript (Memo1.Lines) ; 
end ; 

end. 

object Form36: TForm36 
    Left = 0 
    Top = 0 
    Caption = 'Form36' 
    ClientHeight = 174 
    ClientWidth = 391 
    Color = clBtnFace 
    Font.Charset = DEFAULT_CHARSET 
    Font.Color = clWindowText 
    Font.Height = -11 
    Font.Name = 'Tahoma' 
    Font.Style = [] 
    OldCreateOrder = False 
    PixelsPerInch = 96 
    TextHeight = 13 
    object Button1: TButton 
    Left = 300 
    Top = 72 
    Width = 75 
    Height = 25 
    Caption = 'Button1' 
    TabOrder = 0 
    OnClick = Button1Click 
    end 
    object Memo1: TMemo 
    Left = 8 
    Top = 21 
    Width = 241 
    Height = 145 
    Lines.Strings = (
     'begin' 
     'ShowMessage ('#39'Hello world'#39') ;' 
     'CallSomehow (RoutineInMyApplication) ;' 
     'end.' 
     ' ') 
    TabOrder = 1 
    end 
end 
+1

मैं अभी भी व्यक्तिगत रूप से पास्कलस्क्रिप्ट पसंद करूंगा। 64-बिट डेल्फी कंपाइलर के लिए अनुपलब्ध समर्थन की कमी कमजोरी हो सकती है, लेकिन जब आप 32-बिट डेल्फी कंपाइलर का उपयोग कर रहे हैं (समर्थन वर्तमान में डेल्फी एक्सई 2 तक है), तो आप ठीक होंगे, मुझे लगता है। पास्कलस्क्रिप्ट में वर्तमान में बग फ़िक्सिंग (64-बिट कंपाइलर के लिए पाए गए मुद्दों के लिए) पर कम प्राथमिकता है, लेकिन इसका मतलब यह नहीं है कि यह 32-बिट के लिए स्थिर नहीं है। इनोसेटअप जैसी परियोजनाएं इसका उपयोग करती हैं और यह अभी भी जिंदा है। एक बहुत तेज़ खोज के बाद मुझे नहीं लगता कि एक ही प्रमाणित गुणवत्ता में एक मुफ्त विकल्प है। – TLama

+0

धन्यवाद @TLama। मैंने इसे डी 2006 और एक्सई 1 के लिए स्थापित किया था, लेकिन उसने किसी भी डी 10 बीपीएल को स्थापित नहीं किया था, ReadMe.html एक मृत लिंक था, अंतिम प्रविष्टि change.txt फ़ाइल "बोर्लैंड डेवलपर स्टूडियो 2006 के लिए नया समर्थन" था, इसलिए मैं ' आत्मविश्वास नहीं मैं फिर से देखूंगा। यदि आपके पास समय और स्थापित सॉफ़्टवेयर है तो मुझे यह देखने में दिलचस्पी होगी कि मेरा नमूना ऐप चलाने में क्या शामिल होगा। – rossmcm

+2

मैं उस ['changelog.txt'] (https://github.com/remobjects/pascalscript/blob/master/Source/changelog.txt) फ़ाइल को बहुत गंभीरता से नहीं लेगा। उस फ़ाइल में पिछली बार लॉग इन होने के बाद से ['कई प्रतिबद्धताएं] (https://github.com/remobjects/pascalscript/commits/master) थीं, इसलिए मैं कहूंगा कि वे उस फ़ाइल में लॉग इन करने के लिए रुक गए हैं। – TLama

उत्तर

14

dwscript पुस्तकालय जो वर्तमान में Eric Grange द्वारा किया जाता है की कोशिश करो।

+0

धन्यवाद @RRUZ। किसी भी टिप्पणी के रूप में यह कैसे पास्कलस्क्रिप्ट से तुलना करता है? – rossmcm

+1

1. dwscript डेल्फी वाक्यविन्यास का समर्थन करता है और भाषा 2 में बहुत अच्छे एक्सटेंशन भी जोड़ता है। [सक्रिय रूप से बनाए रखा गया है] (http://code.google.com/p/dwscript/source/list) 3.) अच्छा [प्रलेखन और नमूने] (http://code.google.com/p/dwscript/w/list) 4. एक व्यापक इकाई परीक्षण सेट है। – RRUZ

+0

मुझे यह मिला: http://stackoverflow.com/questions/4889810/what-are-the-pros-and-cons-of-remobjects-pascalscript-versus-the-dws- ​​स्क्रिप्ट जो काफी उपयोगी था। मैं निश्चित रूप से इसे आज़मा दूंगा। – rossmcm

4

जेडी जेवीसीएल में टीजेवीइंटरप्रेटर भी शामिल है जो बहुत हल्का (छोटा) दुभाषिया है, लेकिन dwscript की तुलना में अधिक सीमित सुविधाओं के साथ।

बहुत छोटे (उपयोगकर्ता द्वारा दर्ज सूत्र, या सरल स्ट्रिंग और न्यूमेरिक प्रसंस्करण कार्यों) के लिए JvInterpreter ने मेरे लिए काफी अच्छा काम किया है।

+0

क्या आपके आवेदन में रूटीन और एक्सेस वैरिएबल को कॉल करना संभव है? – rossmcm

+0

आपको थोड़ा कोड लिखना है, लेकिन हाँ, आप कर सकते हैं। डेल्फी के हाल के संस्करणों में बहुत कम कोड, चूंकि आरटीटीआई और विधि आमंत्रण अब और अधिक समझदारी से किया जा सकता है। लेकिन प्रति इकाई कुछ कोड आवश्यक है जिसे आप कॉल करने योग्य बनाना चाहते हैं। मुझे वास्तव में एक रैपर नियंत्रण होना पसंद है जो उपलब्ध है। मेरी स्क्रिप्ट को मेरे ऐप को क्रैश करने में मुश्किल होती है। –

+0

धन्यवाद @Warren। मैंने एक "हैलो वर्ल्ड" ऐप की कोशिश की और यह प्रभावित हुआ कि यह जाने में कितना आसान था - यहां तक ​​कि डेल्फी जैसे संपादक भी शामिल थे। यहां कुछ दस्तावेज हैं [यहां] (http://jvcl.delphi-jedi.org/JvInterpreter.htm) लेकिन दूसरी दिशा में उदाहरणों के उदाहरण में बहुमूल्य छोटी - यानी स्क्रिप्ट से एप्लिकेशन चर का उपयोग करना। क्या कोई _real_ JVCL मदद है? Http://wiki.delphi-jedi.org/wiki/JEDI_Visual_Component_Library पर अधिकांश चीजें खाली लगती हैं और [JvInterpreter] (http://jvcl.delphi-jedi.org/JvInterpreter.htm) एक स्वागत अपवाद है। – rossmcm

0

फास्ट रिपोर्ट से फास्टस्क्रिप्ट (ढेर एक लिंक देने की अनुमति नहीं देता है)। पास्कलस्क्रिप्ट, सी ++ स्क्रिप्ट, जेस्क्रिप्ट और बेसिकस्क्रिप्ट शामिल है। पास्कलस्क्रिप्ट ठीक वही लगता है जो आप पूछते हैं।

+1

प्रश्न निशुल्क निर्दिष्ट करता है। फास्ट रिपोर्ट वाणिज्यिक है। हालांकि यह अच्छा है। –

+0

@WarrenP ओह, क्षमा करें, आप सही हैं। मुझे "मुफ़्त" शब्द याद आती है। – Badiboy

0

Lua एम्बेड करने का प्रयास करें। उदाहरण के लिए Lua 5.1 for Delphi देखें।

+0

लुआ का 'अंत' कीवर्ड है, और 'फ़ंक्शन' कीवर्ड है लेकिन यह बहुत पास्कल जैसा नहीं है। –