www.pudn.com > FastScript15.rar > Unit1.cpp


//--------------------------------------------------------------------------- 
#include  
#pragma hdrstop 
 
#include "Unit1.h" 
#include "Unit2.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma link "fs_iclassesrtti" 
#pragma link "fs_iformsrtti" 
#pragma link "fs_igraphicsrtti" 
#pragma link "fs_iinterpreter" 
#pragma link "fs_synmemo" 
#pragma link "fs_tree" 
#pragma link "fs_icpp" 
#pragma link "fs_ipascal" 
#pragma resource "*.dfm" 
TForm1 *Form1; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
        : TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::FormCreate(TObject *Sender) 
{ 
  fsGlobalUnit()->AddClass(__classid(TForm1), "TForm"); 
  fsGetLanguageList(LangCB->Items); 
  LangCB->ItemIndex = 0; 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::LoadBtnClick(TObject *Sender) 
{ 
  OpenDialog1->InitialDir = ExtractFilePath(Application->ExeName) + "Samples"; 
  OpenDialog1->FilterIndex = LangCB->ItemIndex + 1; 
  if (OpenDialog1->Execute()) 
    Memo->Lines->LoadFromFile(OpenDialog1->FileName); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::LangCBClick(TObject *Sender) 
{ 
  AnsiString s; 
  s = LangCB->Items->Strings[LangCB->ItemIndex]; 
  if (s == "PascalScript") 
    Memo->SyntaxType = stPascal; 
  else 
    Memo->SyntaxType = stCpp; 
  Memo->SetFocus(); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::fsScript1RunLine(TfsScript *Sender, 
      const AnsiString UnitName, const AnsiString SourcePos) 
{ 
  TPoint p; 
  p = fsPosToPoint(SourcePos); 
  Memo->SetPos(p.x, p.y); 
  FStopped = True; 
  while (FStopped) 
    Application->ProcessMessages(); 
} 
 
void __fastcall TForm1::RunBtnClick(TObject *Sender) 
{ 
  int t; 
  TPoint p; 
 
  if (FRunning) 
  { 
    if (Sender == RunBtn) 
      fsScript1->OnRunLine = NULL; 
    FStopped = False; 
    return; 
  } 
 
  fsScript1->Clear(); 
  fsScript1->AddObject("Form1", this); 
  fsScript1->Lines = Memo->Lines; 
  fsScript1->SyntaxType = LangCB->Items->Strings[LangCB->ItemIndex]; 
  fsScript1->Parent = fsGlobalUnit(); 
 
  if (!fsScript1->Compile()) 
  { 
    Memo->SetFocus(); 
    p = fsPosToPoint(fsScript1->ErrorPos); 
    Memo->SetPos(p.x, p.y); 
    Status->Text = fsScript1->ErrorMsg; 
    return; 
  } 
  else 
    Status->Text = "Compiled OK, Running..."; 
 
  Application->ProcessMessages(); 
  t = GetTickCount(); 
 
  if (Sender == RunBtn) 
    fsScript1->OnRunLine = NULL; 
  else 
    fsScript1->OnRunLine = fsScript1RunLine; 
 
  FRunning = True; 
  fsScript1->Execute(); 
  FRunning = False; 
  Status->Text = "Exception in the program"; 
  Status->Text = "Executed in " + IntToStr(GetTickCount() - t) + " ms"; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::EvaluateBClick(TObject *Sender) 
{ 
  Form2->ShowModal(); 
} 
//---------------------------------------------------------------------------