追加とか削除とか IDをノートパッド命令で管理して
block一つで1オブジェクトとして してます
block manageモジュールが機能してないw
#module one_block_data many_data,data_title,del_flag #modinit int p_size data_title="" del_flag=0 sdim many_data,100,p_size return #modfunc local set_del_flag del_flag=-1 sdim data_title,1 sdim many_data,1.1 return #modfunc local set_title str p_str data_title=p_str return #modcfunc local get_title return data_title #modcfunc local get_data_length return length(many_data) #modfunc local set_one_data int p_index,str p_str if p_index >= length(many_data):dialog "p_index is too big",1:return many_data.p_index=p_str return #modcfunc local get_one_data int p_index if p_index >= length(many_data):dialog "p_index is too big",1:return -1 return many_data.p_index #modfunc local str_dump logmes "\ntitle:"+data_title+":"+del_flag repeat length(many_data) logmes ""+cnt+":"+many_data.cnt loop return #modfunc resize int p_size,local loc_length,local loc_array loc_length=length(many_data) sdim loc_array,100,loc_length repeat loc_length loc_array.cnt=many_data.cnt loop if loc_length > p_size { sdim many_data,100,p_size repeat p_size many_data.cnt = loc_array.cnt loop }else{ sdim many_data,100,p_size repeat loc_length many_data.cnt = loc_array.cnt loop } return #global
// TEST CODE newmod block_obj_01,one_block_data,2 mes get_data_length@one_block_data(block_obj_01) resize block_obj_01,1 mes get_data_length@one_block_data(block_obj_01) newmod block_obj_02,one_block_data,3 mes get_data_length@one_block_data(block_obj_02) resize block_obj_02,4 mes get_data_length@one_block_data(block_obj_02) set_one_data@one_block_data block_obj_02,1,"a" set_one_data@one_block_data block_obj_02,3,"b" set_one_data@one_block_data block_obj_02,4,"c" mes ""+get_one_data@one_block_data(block_obj_02,4) str_dump@one_block_data block_obj_02
;モジュール命令 スペース オブジェクト名 "," 引数A "," 引数B・・・
// 試しにこんなデータ入力する begin_var // case 1: def label sta_l { subr_do_eq_ldef4 1,"a",1,label_pc if is_jump_p==1:is_jump_p=0:goto global_label } begin_do // case 2: cls 0 sta_c { subr_do_eq_1 1,en_cls0 if is_jump_p==1:is_jump_p=0:goto global_label } begin_do // case 3: objsize sta_c { do_eq_three(1,en_objsize,120,24) } begin_do // case 4: // read label sta_c { do_eq_three_lread(1,en_get_my_label,"aa1",11) } // button sta_c { switch my_pc_B eq_B 4:cp1="X足す1":goto *sw_begin eq_B 5:bt_pc_1=my_label: goto *sw_begin eq_B 6:cr_com=en_button_A:cmd_fin swend }
#module block_manage #deffunc local init sdim _4note,10000 notesel _4note num=0 return #deffunc local add_block newmod one_block_obj,one_block_data,8 num++ return num-1 #global init@block_manage add_block@block_manage index=stat noteadd ""+str(index),-1,0 set_title@one_block_data one_block_obj@block_manage.index,"case 1: def label" tmp_data={"begin_var // case 1: def label sta_l { subr_do_eq_ldef4 1,\"a\",1,label_pc if is_jump_p==1:is_jump_p=0:goto global_label }"} split tmp_data,"\n",tmp_array repeat length(tmp_array) set_one_data@one_block_data one_block_obj@block_manage.index,cnt,tmp_array.cnt loop
set_one_data@one_block_data one_block_obj@block_manage.index,0,"begin_var // case 1: def label" set_one_data@one_block_data one_block_obj@block_manage.index,1," sta_l {" set_one_data@one_block_data one_block_obj@block_manage.index,2," subr_do_eq_ldef4 1,\"a\",1,label_pc" set_one_data@one_block_data one_block_obj@block_manage.index,3," if is_jump_p==1:is_jump_p=0:goto global_label" set_one_data@one_block_data one_block_obj@block_manage.index,4," }"
str_dump@one_block_data one_block_obj@block_manage.index add_block@block_manage index=stat noteadd ""+str(index),-1,0 set_title@one_block_data one_block_obj@block_manage.index,"case 2: cls 0 " tmp_data={"begin_do // case 2: cls 0 sta_c { subr_do_eq_1 1,en_cls0 if is_jump_p==1:is_jump_p=0:goto global_label }"} split tmp_data,"\n",tmp_array repeat length(tmp_array) set_one_data@one_block_data one_block_obj@block_manage.index,cnt,tmp_array.cnt loop str_dump@one_block_data one_block_obj@block_manage.index add_block@block_manage index=stat noteadd ""+str(index),-1,0 set_title@one_block_data one_block_obj@block_manage.index,"case 3: objsize" tmp_data={"begin_do // case 3: objsize sta_c { do_eq_three(1,en_objsize,120,24) }"} split tmp_data,"\n",tmp_array repeat length(tmp_array) set_one_data@one_block_data one_block_obj@block_manage.index,cnt,tmp_array.cnt loop str_dump@one_block_data one_block_obj@block_manage.index add_block@block_manage index=stat noteadd ""+str(index),-1,0 set_title@one_block_data one_block_obj@block_manage.index,"case 4:" tmp_data={"begin_do // case 4: // read label sta_c { do_eq_three_lread(1,en_get_my_label,\"aa1\",11) } // button sta_c { switch my_pc_B eq_B 4:cp1=\"X足す1\":goto *sw_begin eq_B 5:bt_pc_1=my_label: goto *sw_begin eq_B 6:cr_com=en_button_A:cmd_fin swend }"} split tmp_data,"\n",tmp_array tmp_num=stat if stat >= 8{ resize one_block_obj@block_manage.index,stat } repeat length(tmp_array) set_one_data@one_block_data one_block_obj@block_manage.index,cnt,tmp_array.cnt loop str_dump@one_block_data one_block_obj@block_manage.index set_del_flag@one_block_data one_block_obj@block_manage.1 str_dump@one_block_data one_block_obj@block_manage.1