home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 February / Chip_2000-02_cd.bin / zkuste / Delphi / navody / tt / objvm.exe / SAMPLE / uRunTime.pas < prev   
Pascal/Delphi Source File  |  1998-06-23  |  5KB  |  175 lines

  1. unit uRunTime;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   LangValue, uObjVM, ObjVM, ProxyValue, VisualValue, LangProc;
  8.  
  9. type
  10.   TRunTime = class(TDataModule)
  11.     VM: TObjVM;
  12.     ShowProc: TLangProc;
  13.     ShowProcRuss: TProxyValue;
  14.     InputQueryProc: TLangProc;
  15.     InputQueryRuss: TProxyValue;
  16.     CRLF: TLangProc;
  17.     FlToStr: TLangProc;
  18.     CStrProc: TLangProc;
  19.     procedure ShowProcExec(Sender: TVisualValue; S: IValStack;
  20.       MustReturn: Boolean);
  21.     procedure InputQueryProcExec(Sender: TVisualValue; S: IValStack;
  22.       MustReturn: Boolean);
  23.     procedure CRLFExec(Sender: TVisualValue; S: IValStack;
  24.       MustReturn: Boolean);
  25.     procedure FlToStrExec(Sender: TVisualValue; S: IValStack;
  26.       MustReturn: Boolean);
  27.     procedure CStrProcExec(Sender: TVisualValue; S: IValStack;
  28.       MustReturn: Boolean);
  29.   private
  30.     { Private declarations }
  31.   public
  32.     { Public declarations }
  33.   end;
  34.  
  35. var
  36.   RunTime: TRunTime;
  37.  
  38. implementation
  39. uses VarLangValue;
  40. {$R *.DFM}
  41.  
  42. procedure TRunTime.ShowProcExec(Sender: TVisualValue; S: IValStack;
  43.   MustReturn: Boolean);
  44.          Var I:Integer;
  45.               str:string;
  46.               Res:TVarLangValue;
  47.           begin
  48.             str:='';
  49.             for i:=0 to S.FrameCount-1 do
  50.             begin
  51.               str:=str+s.FrameValues[i].AsString;
  52.             end;
  53.             S.DropFrame;
  54.             if MustReturn then
  55.             begin
  56.               Res:=TVarLangValue.Create(nil);
  57.               Res.AsBoolean:=true;
  58.               S.Push(Res);
  59.             end;
  60.             MessageDlg(str,mtInformation,[mbOk],0);
  61.           end;
  62.  
  63.  
  64. procedure TRunTime.InputQueryProcExec(Sender: TVisualValue; S: IValStack;
  65.   MustReturn: Boolean);
  66.           Var sCaption,sPrompt,sValue:string;
  67.               aResult:boolean;
  68.               iCaption,iPrompt,iValue:integer;
  69.               vCaption,vPrompt,vValueRef,vValue,vResult:ILangValue;
  70.           begin
  71.             sCaption:='';
  72.             sPrompt:='';
  73.             sValue:='';
  74.             vValueRef:=nil;
  75.             iCaption:=-1;
  76.             iPrompt:=-1;
  77.             iValue:=-1;
  78.             case s.FrameCount of
  79.               1:begin
  80.                   iValue:=0;
  81.                 end;
  82.               2:begin
  83.                   iPrompt:=0;
  84.                   iValue:=1;
  85.                 end;
  86.               3:begin
  87.                   iCaption:=0;
  88.                   iPrompt:=1;
  89.                   iValue:=2;
  90.                 end;
  91.             end;
  92.             if iValue<>-1 then
  93.             begin
  94.               vValueRef:=s.FrameValues[iValue].CreateEqu;
  95.               vValue:=vValueRef.GetValue;
  96.               sValue:=vValue.AsString;
  97.               vValue.Free;
  98.             end;
  99.             if iPrompt<>-1 then
  100.             begin
  101.               sPrompt:=s.FrameValues[iPrompt].AsString;
  102.             end;
  103.             if iCaption<>-1 then
  104.             begin
  105.               sCaption:=s.FrameValues[iCaption].AsString;
  106.             end;
  107.             s.DropFrame;
  108.             aResult:=InputQuery(sCaption,sPrompt,sValue);
  109.             if iValue<>-1 then
  110.             begin
  111.               vValue:=TVarLangValue.Create(nil);
  112.               vValue.AsString:=sValue;
  113.               vValueRef.SetValue(vValue);
  114.               vValueRef.Free;
  115.             end;
  116.             if MustReturn then
  117.             begin
  118.               vResult:=TVarLangValue.Create(nil);
  119.               vResult.AsBoolean:=aResult;
  120.               s.Push(vResult);
  121.             end;
  122.           end;
  123.  
  124. procedure TRunTime.CRLFExec(Sender: TVisualValue; S: IValStack;
  125.   MustReturn: Boolean);
  126. Var v:TVarLangValue;
  127. begin
  128.   s.DropFrame;
  129.   if MustReturn then
  130.   begin
  131.     v:=TVarLangValue.Create(Nil);
  132.     v.AsString:=#10#13;
  133.     S.Push(v);
  134.   end;
  135. end;
  136.  
  137. procedure TRunTime.FlToStrExec(Sender: TVisualValue; S: IValStack;
  138.   MustReturn: Boolean);
  139. Var str:string;
  140.     v:TVarLangValue;
  141. begin
  142.   if  s.FrameCount>0 then
  143.   begin
  144.     str:=s.FrameValues[0].AsVariant;
  145.   end;
  146.   s.DropFrame;
  147.   if MustReturn then
  148.   begin
  149.     v:=TVarLangValue.Create(Nil);
  150.     v.AsString:=Str;
  151.     S.Push(v);
  152.   end;
  153. end;
  154.  
  155. procedure TRunTime.CStrProcExec(Sender: TVisualValue; S: IValStack;
  156.   MustReturn: Boolean);
  157. Var str:string;
  158.     v:TVarLangValue;
  159. begin
  160.   if  s.FrameCount>0 then
  161.   begin
  162.     str:=s.FrameValues[0].AsVariant;
  163.   end;
  164.   s.DropFrame;
  165.   if MustReturn then
  166.   begin
  167.     v:=TVarLangValue.Create(Nil);
  168.     v.AsString:=Str;
  169.     S.Push(v);
  170.   end;
  171.  
  172. end;
  173.  
  174. end.
  175.