home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 October / VPR9710A.ISO / Ffilly / TFYW111 / RTW_ARR.MAC < prev    next >
Text File  |  1997-06-05  |  4KB  |  183 lines

  1. //配列操作関連関数
  2.  
  3.  
  4. main:
  5.     menu
  6.         "Array&Size\t配列の要素数を返す",
  7.         "DelArray&All\t配列の要素をすべて削除",
  8.         "&DelArrayAt...\t配列の要素を一つ削除",
  9.         "&InsArrayAt...\t配列の要素を一つ挿入";
  10.     if(result == 0) goto macro_cancel;
  11.     else if(result == 1) call InsFunc "ArraySize",3;
  12.     else if(result == 2) call InsFunc "DelArrayAll",3;
  13.     else if(result == 3) goto DelArrayAt;
  14.     else if(result == 4) goto InsArrayAt;
  15.  
  16.  
  17. macro_end:
  18.     endmacro;
  19.  
  20.  
  21. macro_cancel:
  22.     writeininum "tfywrite.ini", "Control", "MenuCancel", 1;
  23.     endmacro;
  24.  
  25.  
  26. DelArrayAt:
  27.     escape;
  28.     call MacSrvInit;
  29.  
  30.     ddepoke "newdialog", "30,DelArrayAt";
  31.  
  32.     ddepoke "newcontrol", "text,,配列名(&A)";
  33.     ddepoke "part", "15";
  34.     ddepoke "newcontrol", "edit,Array,";
  35.  
  36.     ddepoke "newcontrol", "text,,削除要素位置(&P)";
  37.     ddepoke "part", "15";
  38.     ddepoke "newcontrol", "edit,Position,";
  39.  
  40.     ddepoke "newcontrol", "text,, ";    
  41.     ddepoke "part", "10";
  42.     ddepoke "newcontrol", "okcancel,Ok";
  43.  
  44.     call MakeDialog;
  45.  
  46.     $Ok = dderequest("getstring Ok");
  47.     if($Ok == "0")goto macro_end;
  48.  
  49.     $Array    = dderequest("getstring Array");
  50.     $Position = dderequest("getstring Position");
  51.  
  52.     $ArrayPer = rightstr($Array,2);
  53.     if($ArrayPer != "[]") $Array = $Array + "[]";
  54.  
  55.     $Cmd = "DelArrayAt(" +$Array+ "," +$Position+ ");";
  56.     insert $Cmd;
  57.  
  58.     goto macro_end;
  59.     ddeexecute "exit";
  60.  
  61.  
  62. InsArrayAt:
  63.     escape;
  64.     call MacSrvInit;
  65.  
  66.     ddepoke "newdialog", "30,InsArrayAt";
  67.  
  68.     ddepoke "newcontrol", "text,,配列名(&A)";
  69.     ddepoke "part", "15";
  70.     ddepoke "newcontrol", "edit,Array,";
  71.  
  72.     ddepoke "newcontrol", "text,,要素挿入位置(&P)";
  73.     ddepoke "part", "15";
  74.     ddepoke "newcontrol", "edit,Position,";
  75.  
  76.     ddepoke "newcontrol", "text,,挿入要素(&E)";
  77.     ddepoke "part", "15";
  78.     ddepoke "newcontrol", "edit,Element,";
  79.  
  80.     ddepoke "newcontrol", "text,, ";    
  81.     ddepoke "part", "10";
  82.     ddepoke "newcontrol", "okcancel,Ok";
  83.  
  84.     call MakeDialog;
  85.  
  86.     $Ok = dderequest("getstring Ok");
  87.     if($Ok == "0")goto macro_end;
  88.  
  89.     $Array    = dderequest("getstring Array");
  90.     $Position = dderequest("getstring Position");
  91.     $Element  = dderequest("getstring Element");
  92.  
  93.     $ArrayPer = rightstr($Array,2);
  94.     if($ArrayPer != "[]") $Array = $Array + "[]";
  95.  
  96.     $Cmd = "InsArrayAt(" +$Array+ "," +$Position+ "," +$Element+ ");";
  97.     insert $Cmd;
  98.  
  99.     goto macro_end;
  100.     ddeexecute "exit";
  101.  
  102.  
  103. //関数の挿入
  104. InsFunc:
  105.     //第1引数 str 関数名
  106.     //第2引数 str 関数の引数のタイプ
  107.     // (0=なし、1=数値型、2=文字列型、3=配列変数)
  108.  
  109.     if(##2 == 0){
  110.         escape;
  111.         insert $$1 + "();";
  112.         return;
  113.     }
  114.  
  115.     #Select = selecting;
  116.     $SText = "";
  117.  
  118.     if(#Select == 1){
  119.         #STopX = seltopx;
  120.         #STopY = seltopy;
  121.         #SEndX = selendx;
  122.         #SEndY = selendy;
  123.         $SText = gettext(#STopX,#STopY,#SEndX,#SEndY);
  124.         #SLength = strlen($SText);
  125.         moveto #STopX,#STopY;
  126.  
  127.         beginsel;
  128.         right #SLength;
  129.         delete;
  130.     }
  131.     
  132.     if(##2 == 1){
  133.         insertfix $$1 + "(" + $SText + ");";
  134.         if($SText == ""){
  135.             gowordend;
  136.             right;
  137.         }
  138.     }
  139.  
  140.     else if(##2 == 2){
  141.         insertfix $$1 + "(\"" + $SText + "\");";
  142.         if($SText == ""){
  143.             gowordend;
  144.             right 2;
  145.         }
  146.     }
  147.  
  148.     else if(##2 == 3){
  149.         if(rightstr($SText,2) != "[]") $SText = $SText + "[]";
  150.         insertfix $$1 + "(\"" + $SText + "\");";
  151.         if($SText == ""){
  152.             gowordend;
  153.             right;
  154.         }
  155.     }
  156.  
  157.     return;
  158.  
  159.  
  160. //ダイアログボックス関連サブルーチン
  161. MacSrvInit:
  162.     run "macserv.exe /h";
  163.     ddeinitiate "HideMacroServer", "DlgService";
  164.     if( !result ) {
  165.         message "ddeinitiate failed";
  166.         endmacro;
  167.     }
  168.     ddeexecute "setcurdir " + directory;
  169.     return;
  170.  
  171.  
  172. MakeDialog:
  173.     #hwnd = hidemaruhandle(0);
  174.     ddeexecute "dialog " + str(#hwnd);
  175.     $$a = "";
  176.     ddestartadvice "dlgresult", $$a;
  177.     while( strlen($$a) == 0 ) {
  178.         ddewaitadvice $$a, 100;
  179.     }
  180.     ddestopadvice "dlgresult";
  181.     ddeexecute "enddialog";
  182.     return $$a;
  183.