Written by xinyiman Gennaio 18, 2012, 09:12:00 am20981 ViewsRating: 0 (0 Rates)Print
Se vi è mai capitata la necessità di eseguire del codice pascal arbitrario in un vostro eseguibile Free Pascal la soluzione a tale problema si chiama Pascal Script
procedure TForm1.Button1Click(Sender: TObject); begin EseguiCodicePas(); end;
procedure TForm1.EseguiCodicePas(); var i: integer; begin List_Debug.Clear; PSScript1.Script := memScript.Lines; if PSScript1.Compile then begin if PSScript1.Execute then //Edit1.Text:=Self.Caption; lblStatus.Caption := 'Esecuzione avvenuta'; end else begin Edit1.Text:='Errore:'; for i:=0 to PSScript1.CompilerMessageCount-1 do List_Debug.Items.Add(PSScript1.CompilerMessages[i].MessageToString); lblStatus.Caption := 'Errorore'; end; end;
procedure TForm1.FormShow(Sender: TObject); begin Listbox1.Items.LoadFromFile(Application.Location + 'prog.txt'); Form1.memScript.Lines:=Listbox1.Items; end;
Anche il seguente codice va impostato a mano negli eventi dell'oggetto TPSScript di nome PSScript1. Questo va fatto assolutamente per poter ottenere un risultato dello script eseguito run-time all'interno della nostra applicazione principale.
procedure TForm1.EseguiCodicePas(); var i: integer; begin List_Debug.Clear; PSScript1.Script := memScript.Lines; {INSERISCO IL CODICE PASCAL NELL'OGGETTO} if PSScript1.Compile then {DICO ALL'OGGETTO DI COMPILARE TALE CODICE SORGENTE} begin if PSScript1.Execute then {ORA DICO ALL'OGGETTO DI ESEGUIRE IL CODICE SORGENTE} //Edit1.Text:=Self.Caption; lblStatus.Caption := 'Esecuzione avvenuta'; end else begin Edit1.Text:='Errore:'; for i:=0 to PSScript1.CompilerMessageCount-1 do List_Debug.Items.Add(PSScript1.CompilerMessages[i].MessageToString); lblStatus.Caption := 'Errorore'; end; end;
xinyiman registered at Italian community of Lazarus and Free Pascal on Ottobre 14, 2011, 10:56:28 pm and has posted 3273 posts in the boards since then. Last visit was Novembre 20, 2024, 08:31:19 am.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.