home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / vrac / ptgenr2.zip / SAMPLE.ZIP / XPL2SQL.PAS < prev   
Pascal/Delphi Source File  |  1994-04-09  |  3KB  |  140 lines

  1. {{$DEFINE Trans}         {* do only enable if you have TRANS.L *}
  2.  
  3. program XplainToSQL;
  4.  
  5. uses Objects, BBError, BBFile, BBStrRes, BBUtil,
  6.      SqlXplMn, Drivers, Views, TextView,
  7.      {$IFDEF Trans}
  8.      Trans, DVAPI
  9.      {$ENDIF}
  10.      App, HelpFile;
  11.  
  12.  
  13. type
  14.   PSQLWindow = ^TSQLWindow;
  15.   TSQLWindow = object(TWindow)
  16.     Interior : PTerminal;
  17.     constructor Init(var Bounds : TRect; BufSize : Word);
  18.   end;
  19.  
  20.   PXplainStatementDlg = ^TXplainStatementDlg;
  21.   TXplainStatementDlg = object(SqlXplMn.TXplainStatementDlg)
  22.     procedure HandleEvent(var Event : TEvent);  virtual;
  23.   end;
  24.  
  25.   TSqlXplApp = object(SqlXplMn.TSqlXplApp)
  26.     procedure HandleEvent(var Event : TEvent);  virtual;
  27.   end;
  28.  
  29.  
  30. constructor TSQLWindow.Init(var Bounds : TRect; BufSize : Word);
  31. var
  32.   R : TRect;
  33.   vSB, hSB : PScrollBar;
  34. begin
  35.   inherited Init(Bounds, 'Xplain to SQL translation', wnNoNumber);
  36.   vSB := StandardScrollBar(sbVertical + sbHandleKeyboard);
  37.   Insert(vSB);
  38.   hsb := StandardScrollBar(sbHorizontal + sbHandleKeyboard);
  39.   Insert(hSB);
  40.   GetExtent(R);
  41.   R.Grow(-1, -1);
  42.   Interior := New(PTerminal, Init(R, hSB, vSB, BufSize));
  43.   Insert(Interior);
  44.   AssignDevice(Output, Interior);
  45.   Rewrite(Output);
  46. end;
  47.  
  48.  
  49. procedure TXplainStatementDlg.HandleEvent(var Event : TEvent);
  50. var
  51.   r : TXplainStatementDlgRec;
  52.   i : integer;
  53.   t : text;
  54.   s : string;
  55. begin
  56.   inherited HandleEvent(Event);
  57.   if Event.What and evCommand <> 0 then  begin
  58.     case Event.Command of
  59.       cmTranslate : begin
  60.  
  61.         {* get entered statement *}
  62.           GetData(r);
  63.  
  64. {$IFDEF Trans}
  65.         {* write statement to file *}
  66.           Assign(t, 'XPLAIN.OUT');
  67.           Rewrite(t);
  68.           for i := 0 to r.Statement.Length-1 do
  69.             write(t, r.Statement.Buffer[i]);
  70.           writeln(t, '.');
  71.           System.Close(t);
  72.  
  73.         {* translate Xplain to SQL *}
  74.           Translate;
  75.  
  76.         {* output translated SQL statement to window *}
  77.           Assign(t, 'SQL.IN');
  78.           Reset(t);
  79.           while not eof(t) do   begin
  80.             readln(t, s);
  81.             writeln(s);
  82.           end;
  83.           System.Close(t);
  84. {$ELSE}
  85.           for i := 0 to r.Statement.Length-1 do
  86.             write(r.Statement.Buffer[i]);
  87. {$ENDIF}
  88.  
  89.         end;
  90.       SqlXplMn.cmClear : begin
  91.           r.Statement.Length := 0;
  92.           SetData(r);
  93.         end;
  94.     end; { of case }
  95.   end;
  96. end;
  97.  
  98.  
  99. procedure TSqlXplApp.HandleEvent(var Event : TEvent);
  100. var
  101.   R : TRect;
  102. begin
  103.   inherited HandleEvent(Event);
  104.   if (Event.What and evCommand <> 0) and (Event.Command = cmOpenTranslateDlg) then  begin
  105.     R.Assign(0,0,50,10);
  106.     DeskTop^.Insert(New(PSQLWindow, Init(R, 4096)));
  107.     DeskTop^.Insert(New(PXplainStatementDlg, Init));
  108.   end;
  109. end;
  110.  
  111.  
  112. var
  113.   MyApp : TSqlXplApp;
  114.   Event : TEvent;
  115. begin
  116.   PrintStr(prnCR+'Xplain to SQL 1.00  (c) 1993 by Berend de Boer and Ronald Breedveld');
  117.   RegisterType(RStringList);
  118.   LoadStrings;
  119.  
  120.   InitBBError('XPL2SQL.LOG');
  121.  
  122.   RegisterHelpFile;
  123.  
  124. {$IFDEF Trans}
  125.   dv_api_init;
  126. {$ENDIF}
  127.  
  128.   MyApp.Init;
  129.   Event.What := evCommand;
  130.   Event.Command := cmOpenTranslateDlg;
  131.   MyApp.PutEvent(Event);
  132.   MyApp.Run;
  133.   Close(Output);
  134.   MyApp.Done;
  135.  
  136. {$IFDEF Trans}
  137.   dv_api_exit;
  138. {$ENDIF}
  139. end.
  140.