'Nexacro-Function/ETC'에 해당되는 글 4건

  1. 2017.02.09 Nexacro.Array - 값 존재 위치(index)얻기
  2. 2017.01.28 Nexacro.Etc - Graphic
  3. 2017.01.28 Nexacro.Etc - 파일관리
  4. 2017.01.28 Nexacro.Etc - 확장 비교함수

[ Nexacro.Array - 값 존재 위치(index)얻기 ]



'Nexacro-Function > ETC' 카테고리의 다른 글

Nexacro.Etc - Graphic  (0) 2017.01.28
Nexacro.Etc - 파일관리  (0) 2017.01.28
Nexacro.Etc - 확장 비교함수  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.Etc -  Graphic ]

 

 


/*********************************************************************************************
 ★ 설명
     GraphicPath의 그리기 영역을 구한다.
     GraphicPath에서 Border와 Pen의 크기를 뺀 영역을 의미한다.
 ★ parameter
    1. obj : GraphicPath Object ( 예 : GraphicPath00 )
    2. nLeftOffset : GrapicPath의 영역 중 Left에서 안쪽으로 들어가는 Offset값
     (옵션 : Default = 0) (예 : nLeftOffset=10이면 10만큼 Left에서 떨어진 지점이 영역으로 잡힘)
    3. nTopOffset : GrapicPath의 영역 중 Top에서 안쪽으로 들어가는 Offset값
     (옵션 : Default = 0) (예 : nTopOffset=10이면 10만큼 Top에서 떨어진 지점이 영역으로 잡힘)
    4. nRightOffset : GrapicPath의 영역 중 Right에서 안쪽으로 들어가는 Offset값
     (옵션 : Default = nLeftOffset) (예 : nLeftOffset=10이면 10만큼 Right에서 떨어진 지점이 영역으로 잡힘)
    5. nBottomOffset : GrapicPath의 영역 중 Bottom에서 안쪽으로 들어가는 Offset값
     (옵션 : Default = nBottomOffset) (예 : nLeftOffset=10이면 10만큼 Bottom에서 떨어진 지점이 영역으로 잡힘)★ return
 ★ Return         
    - 성공 = Rect Object
    - 실패 = null
   (단, offset이 너무커서 width나 height값보다 클 경우도 null이 return된다.)
 ★ 목적    
    GraphicPath.position을 이용하여 그리면 제대로 안되는 것을 알 수 있다. 그래서, 만들었다. Offset도 줄겸
 ★ BUG
    이 함수도 제대로 되는게 아니다. 나도 정확히 우찌해야 할지 잘 모르겠다. ???(모름)
*********************************************************************************************/

function GPRect(obj:GraphicPath, nLeftOffset, nTopOffset, nRightOffset, nBottomOffset)

{

 var GR = new Rect();

 var border, pen;

 

 if( fn_IsNull(obj) )  return null;

 if( fn_IsNull(nLeftOffset) ) nLeftOffset = 0;

 if( fn_IsNull(nTopOffset) ) nTopOffset = 0;

 if( fn_IsNull(nRightOffset) ) nRightOffset = nLeftOffset;

 if( fn_IsNull(nBottomOffset) ) nBottomOffset = nTopOffset;

 

 border = ( "x"+obj.style.border.width == "xNaN" ? 0 : obj.style.border.width );

 pen = ( "x"+obj.strokepen.width == "xNaN" ? 1 : obj.strokepen.width );

 GR.left = nLeftOffset;

 GR.top = nTopOffset;

 

 // 이렇게 하는게 최선이다.

 GR.right = obj.position.width - nRightOffset - 2*border - pen;

 GR.bottom = obj.position.height - nBottomOffset - 2*border - pen;

 if( GR.width < 0 || GR.height < 0 )

  return null;

 

 return GR;

}

 

/*********************************************************************************************
 ★ 설명
     GraphicPath처리 시 화살표처리 Data를 만들어 준다.
     이미 그려놓은 GraphicPath.data에 이 함수에서 return된 data를 덧붙여 처리해서 사용한다.
 ★ parameter
    1. obj:GraphicPath : GraphicPath Object ( 예 : GraphicPath00 )
    2. nArrowType  : 화살표의 종류( 예 : 1 )
       - 0 = 화살표 안그림
       - 1 = ---> 화살표
       - 2 = ---▶ 화살표
       - 3 = ---◆ 화살표
       - 4 = ---● 화살표
    3. nEndX, nEndY, nDirAngle : 화살표의 위치 및 화살표 방향
       - nEndX, nEndY : 화살표의 끝좌표
       - nAngle       : 화살표의 방향, 단 Radian값이다.
                        화살표 끝좌표의 가로축과 시작방향이 이루는 각이다.
                        (※ GetAngle()함수를 이용하면 쉽게 구할 수 있다.)
       (예 : (15,15) ----> (20,20) 으로 화살표를 그리고 싶다면
             nEndX = 20, nEndY = 20, nAngle = Deg2Rad(-45) )
    4. 화살표가 그려질 선을 중심으로 화살표의 넓이와 높이
       1) nArrowW : 화살표 넓이
       2) nArrowH : 화살표 높이
       (※ 단, ---●의 경우 타원처리는 안되고 nArrowW, nArrowH중 작은 쪽을 반지름으로 하는 원만 처리한다. )
                    (20)
       (예 : -----(0)▶(10) ==> nArrowW = 10, nArrowH = 20 )
                     (0)
                    (20)
       (예 : -----(0)◆(10) ==> nArrowW = 10, nArrowH = 20 )
                     (0)
 ★ return
    - 성공 = GraphicPath.data에 들어갈 화살표 Data
    - 실패 = ""
*********************************************************************************************/

function GPArrow(obj:GraphicPath, nArrowType, nEndX, nEndY, nAngle, nArrowW, nArrowH )

{

 var D="";

 var nDirX, nDirY;

 var nArrowOrgX, nArrowOrgY, nArrowCoW, nArrowCoH, nArrowDist;

 var nArrowType;

 

 if( fn_IsNull(obj) || fn_IsNull(nArrowType) || fn_IsNull(nEndX) || fn_IsNull(nEndY) ||

  fn_IsNull(nAngle) || fn_IsNull(nArrowW) || fn_IsNull(nArrowH) )

  return "";

  

 // ->, ▶

 if( nArrowType == 1 || nArrowType == 2 )

 {

  nArrowCoW = nArrowW;

  nArrowCoH = Math.round(nArrowH/2,1);

 }

 // ◆, ●

 else if( nArrowType == 3 || nArrowType == 4 )

 {

  nArrowCoW = Math.round(nArrowW/2,1);

  nArrowCoH = Math.round(nArrowH/2,1);  

 }

 else

  return "";

 

 if( nArrowType == 4 )

  nArrowDist = Math.min(nArrowW,nArrowH);

 else

  nArrowDist = Math.sqrt(Math.pow(nArrowCoW,2)+Math.pow(nArrowCoH,2));

  

 nArrowOrgX = nEndX + nArrowDist*Math.cos(nAngle);

 nArrowOrgY = nEndY - nArrowDist*Math.sin(nAngle);

/*

D  = " M " + nEndX + " " + nEndY;

 

D += " L " + nArrowOrgX + " " + nArrowOrgY;

 

return D;

 

*/

 // ->

 if( nArrowType == 1 )

 {

  var nArrowAngle, vRotatePoint1, vRotatePoint2;

  

  nArrowAngle = Math.atan2(nArrowCoH,nArrowCoW);

  vRotatePoint1 = RotatePoint( nArrowOrgX, nArrowOrgY, nEndX, nEndY, nArrowAngle );

  vRotatePoint2 = RotatePoint( nArrowOrgX, nArrowOrgY, nEndX, nEndY, -1*nArrowAngle );  

     

  D += " M " + nEndX + " " + nEndY;  

  D += " L " + vRotatePoint1.left + " " + vRotatePoint1.top;

  D += " M " + nEndX + " " + nEndY;    

  D += " L " + vRotatePoint2.left + " " + vRotatePoint2.top;

 }

 // ▶

 if( nArrowType == 2 )

 {

  var nArrowAngle, vRotatePoint1, vRotatePoint2;

 

  nArrowAngle = Math.atan2(nArrowCoH,nArrowCoW);

  vRotatePoint1 = RotatePoint( nArrowOrgX, nArrowOrgY, nEndX, nEndY, nArrowAngle );

  vRotatePoint2 = RotatePoint( nArrowOrgX, nArrowOrgY, nEndX, nEndY, -1*nArrowAngle );  

 

  D += " M " + nEndX + " " + nEndY;  

  D += " L " + vRotatePoint1.left + " " + vRotatePoint1.top;

  D += " L " + vRotatePoint2.left + " " + vRotatePoint2.top;

  D += " L " + nEndX + " " + nEndY;    

 }

 // ◆

 if( nArrowType == 3 )

 {

  var nArrowAngle, vRotatePoint1, vRotatePoint2, vRotatePoint3;

  

  nArrowAngle = Math.atan2(nArrowCoH,nArrowCoW);

  vRotatePoint1 = RotatePoint( nArrowOrgX, nArrowOrgY, nEndX, nEndY, nArrowAngle );

  vRotatePoint2 = RotatePoint( nArrowOrgX, nArrowOrgY, nEndX, nEndY, -1*nArrowAngle );

  vRotatePoint3 = RotatePoint( nEndX, nEndY, vRotatePoint1.left, vRotatePoint1.top, Math.PI-2*nArrowAngle );

  

  D += " M " + nEndX + " " + nEndY;  

  D += " L " + vRotatePoint1.left + " " + vRotatePoint1.top;

  D += " L " + vRotatePoint3.left + " " + vRotatePoint3.top;

  D += " L " + vRotatePoint2.left + " " + vRotatePoint2.top;

  D += " L " + nEndX + " " + nEndY;   

 }

 // ●

 if( nArrowType == 4 )

 {

  var nRX, nRY;

 

  nRX = nRY = Math.min(nArrowCoW,nArrowCoH);

  D += " M " + nEndX + " " + nEndY;

  D += " A " + nRX + " " + nRY + " 180 0 1 " + nArrowOrgX + " " + nArrowOrgY;  

  D += " A " + nRX + " " + nRY + " 180 0 1 " + nEndX + " " + nEndY;    

 }

 return D;

}

 

/*********************************************************************************************
 ★ 설명
     GraphicPath.data를 2차원 Array로 반환한다.
     단순히 Parsing만 하며 Array의 순서는 GraphicPath.data의 순서를 그대로 따른다.
     단, type이 중복되어 생략되는 경우(예: V 100 100) Array가 추가되고 첫번째 요소는 ""가 들어간다.
     (아래 예를 참고할것)
 ★ parameter
    1. sGpData : GraphicPath.data ( 예 : "M 0 0 L 100 100 H 100 V 100 100" )
 ★ return
    - 성공 = 2차원 Array
             ( 예 : Array ==> { {M,0,0}, {L,100,100}, {H,100}, {V,100}, {,100} }
    - 실패 = 빈 Array
 ★ 목적    
    GraphicPathData Object가 있었다가 사라졌다.
 ★ 참고사항
    aGpData로 data문자열을 만들고 싶다면 ==> GraphicPath.data = aGpData.join(" "); 로 처리하면 된다.
 ********************************************************************************************/

function AGPData(sGpData)

{

 var aGpData = new Array();

 var arr = new Array();

 var i, gi_no=-1, ho_no, val, sType, ho_num;

 

 if( fn_IsNull(sGpData) )  return aGpData;

 

 sGpData = sGpData.toString();

 arr = sGpData.split(" ");

 for( i = 0 ; i < arr.length ; i++ )

 {

  val = RTrim(LTrim(arr[i]));

  if( IsAlpha(val) == true )

  {

   gi_no++;

   ho_no = 0;

   

   var aHor = new Array(); // 2차원 배열의 가로 배열

   aGpData[gi_no] = aHor;

   aGpData[gi_no][ho_no] = val;

   sType = val;

  }

  else if( IsNum(val) == true )

  {

   ho_no++;  

   if( ( (sType == "M" || sType == "m") && ho_no == 3) ||

    ( (sType == "L" || sType == "l") && ho_no == 3) ||

    ( (sType == "H" || sType == "h") && ho_no == 2) ||

    ( (sType == "V" || sType == "v") && ho_no == 2) ||

    ( (sType == "A" || sType == "a") && ho_no == 8) ||

    ( (sType == "C" || sType == "c") && ho_no == 7) )

   {

    gi_no++;

    ho_no = 0;

 

    var aHor1 = new Array(); // 2차원 배열의 가로 배열

    aGpData[gi_no] = aHor1;

    aGpData[gi_no][ho_no] = "";    

    ho_no++;

    aGpData[gi_no][ho_no] = parseInt(val);

   }

   else

   {

    aGpData[gi_no][ho_no] = parseInt(val);

   }

  }

 }

 

 return aGpData;

}

 

 

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > ETC' 카테고리의 다른 글

Nexacro.Array - 값 존재 위치(index)얻기  (0) 2017.02.09
Nexacro.Etc - 파일관리  (0) 2017.01.28
Nexacro.Etc - 확장 비교함수  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.Etc -  파일관리 ]

 

 


/*******************************************************************************
 ★ 설명
    File Path 문자열(예 : C:\a\b\filename.ext)에서 File명(예 : filename)을 추출
 ★ Parameter
    1. sPath   : File Path 문자열 (예 : "C:\a\b\filename.ext")
    2. bExt    : extend를 return되는 File명에 포함시킬지 여부 ( 옵션 : Default=false )
                 - true : extend를 File명에 포함시킴
                 - false : extend를 File명에 포함시키지 않음
 ★ return
    - 성공 =
  - bExt = true인 경우 ==> sPath에서 File명(예 : "filename.ext")
  - bExt = false인 경우 ==> sPath에서 File명(예 : "filename")
 - 실패 = ""
 ******************************************************************************/

function fn_GetFileName( sPath, bExt )

{

 var start_pos, end_pos, tmp_pos, filename;

 

 if( fn_IsNull(sPath) )  return "";

 if( fn_IsNull(bExt) )

  bExt = false;

 

 start_pos = Math.max(PosReverse( sPath, "\\" ),

      PosReverse( sPath, "/" ));

    tmp_pos = PosReverse( sPath, "::");

 if( tmp_pos > 0 ) tmp_pos++;

 start_pos = Math.max( start_pos, tmp_pos );

 if( bExt == false )

 {

  end_pos = PosReverse( sPath, "." );

  if( end_pos < 0 )

   end_pos = sPath.length;

  filename = sPath.substr( start_pos+1, end_pos-start_pos-1 );

 }

 else

 {

  filename = sPath.substr( start_pos+1 );

 }

  

 return filename;

}

 

/*******************************************************************************
 ★ 설명
    File Path 문자열(예 : C:\a\b\filename.ext)에서 확장자(예 : ext)을 추출
 ★ Parameter
    1. sPath   : File Path 문자열 (예 : "C:\a\b\filename.ext")
 ★ return
    - 성공 = sPath에서 확장자(예 : "ext") (단, "."이 없으면 "" return됨)
    - 실패 = ""
 ******************************************************************************/

function fn_GetFileExt( sPath )

{

 var pos;

 

 if( fn_IsNull( sPath ) ) return "";

 

 pos = PosReverse( sPath, "." );

 if( pos < 0 )

  return "";

 else

  return sPath.substr( pos+1 );

}

 

/*******************************************************************************
 ★ 설명
    sPath 문자열(예 : C:\a\b\filename.ext)에서 Path(예 : C:\a\b\)를 추출
 ★ Parameter
    1. sPath   : Path 문자열 (예 : "C:\a\b\filename.ext")
 ★ return
    - 성공 = sPath에서 Path(예 : "C:\a\b\")
    - 실패 = ""
 ******************************************************************************/

function fn_GetFilePath( sPath )

{

 var filename;

 

 if( fn_IsNull(sPath) )  return "";

 

 filename = GetFileName( sPath, true );

 if( filename == null )  return null;

 

 return sPath.substr(0, sPath.length - filename.length);

}

 

/*******************************************************************************
 ★ 설명
    화면내에서 자기 자신화면의 Url을 얻어온다.
 ★ Parameter
    없음
 ★ return
    - 성공 = 자기 자신화면의 Url ( 절대경로 또는 Service::a.xfdl 형태로 return됨 )
    - 실패 = ""
 ******************************************************************************/

function fn_GetThisUrl()

{

 var this_url, parent_type;

 

 // Division, Tab, PopupDiv인 경우에는 따로 처리해야 함

 parent_type = GetObjType(parent);

 if( parent_type == "Div" || parent_type == "PopupDiv" || parent_type == "TabPage" )

  this_url = parent.url;

 else

  this_url = this.getOwnerFrame().formurl;

  

 return this_url;

}

 

/*******************************************************************************
 ★ 설명
    현재 실행되고 있는 Project의 Root Full Path를 얻어온다.
 ★ Parameter
    없음
 ★ return
    - 성공 = 현재 실행되고 있는 Project의 Root Full Path
    - 실패 = ""
 ★ 참고사항
    현재 실행되고 있는 ADL Path는 application.xadl을 통해 얻을 수 있다.
 ★ 목적
    Tool에서 system.execXPlatform을 하면 Project경로를 알수 없어 실행이 힘들기
    때문에 만들었다.
 ★ BUG
    모든 화면 Service는 Project내의 바로 한단계 아래의 Sub Directory이고
    ADL은 Project Directory에 있다는 전제하에 만들어 졌다.
    즉, Project=C:\A\, ADL=C:\A\ADL.xadl, Service=C:\A\Service\라는 가정하에
    만들어졌다.
 ******************************************************************************/

function fn_GetProjectPath()

{

 var cur_xadl, filename, project_path;

 

 cur_xadl = application.xadl;

 if( fn_IsNull(cur_xadl) ) return "";

 

 filename = GetFileName(cur_xadl, true);

 if( fn_IsNull(filename) ) return "";

 

 // QuickView로 돌린 경우

 if( filename == "empty_adl.xadl" )

 {

  var this_url, pos;

  

  this_url = Replace( childframe.formurl, "\\", "/" );

  pos = PosReverse( this_url, "/");

  if( pos < 0 )

   return "";

  pos = PosReverse( this_url, "/", pos-1);

  if( pos < 0 )

   return "";

 

  project_path = childframe.formurl.substr(0, pos+1);

 }

 // Launch Project로 돌린 경우

 else

 {

  var trim_path;

  project_path = GetFilePath(application.xadl);

  trim_path = LTrim(project_path, "file://");

  if( trim_path != project_path )

   project_path = Replace( trim_path, "/", "\\" );

 }

 

 return project_path;

}

 

/*******************************************************************************
 ★ 설명
     ADL을 주고 XPlatform실행하는 함수
 ★ parameter
    1. sADL : ADL
       1) Full Path지정한 경우 (예 : C:\\Project\\ADL.xadl")
          Full Path에 해당하는 ADL실행
              2) ADL명만(확장자제외) 지정한 경우 ( 예 : "ADL" )
                 Project Path내의 ADL실행
              ※ 단, 경로에 대한 유효성 여부는 검사하지 않음
    2. sKey : XPlatform실행시 Key
              (옵션 : Default = ADL명(단, 확장자제외))
 ★ return
    - 성공 = true
    - 실패 = false
 ★ 주의사항
    XPLatform실행시 Argument를 전달할 방법은 못 찾겠다.
 ★ 목적    
    PC에서 Tool로 작업시 Project Path를 모를 경우 XPlatform실행이 어려워서 만들었음
 ******************************************************************************/

function fn_RunXP(sADL, sKey)

{

 var adl_name;

 var project_path;

 var oChildFrame_SDI;

 

 if( fn_IsNull(sADL) )  return false;

 

 adl_name = GetFileName(sADL);

 if( fn_IsNull(sKey) )  sKey = adl_name;

 

 // FullPath로 지정한 경우

 if( adl_name != sADL )

  system.execXPlatform(" -X \"" + sADL + "\" -K " + sKey);

 // ADL명만 지정한 경우

 else

 {

  project_path = GetProjectPath();

  if( fn_IsNull(project_path) )

   return false;

  else

   system.execXPlatform(" -X \"" + project_path + sADL + ".xadl" + "\" -K " + sKey);

 }

  

 return true;

}

 

/*******************************************************************************
 ★ 설명
     XPLATFORM에서 정의된 Path예약어와 실제경로 목록을 얻어오는 함수
 ★ parameter
 ★ return
    2차원 Array = {{alias 1, 실제경로 1}, {alias 2, 실제경로 2},...}
 ******************************************************************************/

function fn_GetPathAliasList()

{

 var aList = new Array();

 

 var tmp = new Array();

 tmp[0] = "%USERAPP%";  tmp[1] = system.convertRealPath(tmp[0]);

 aList[0] = tmp;

 

 var tmp = new Array();

 tmp[0] = "%MYDOCUMENT%"; tmp[1] = system.convertRealPath(tmp[0]);

 aList[1] = tmp;

 

 var tmp = new Array();  

 tmp[0] = "%INSTALLROOT%"; tmp[1] = system.convertRealPath(tmp[0]);

 aList[2] = tmp;

 

 var tmp = new Array();  

 tmp[0] = "%XPLATFORM%"; tmp[1] = system.convertRealPath(tmp[0]);

 aList[3] = tmp;

 

 var tmp = new Array();  

 tmp[0] = "%COMPONENT%"; tmp[1] = system.convertRealPath(tmp[0]);

 aList[4] = tmp;

 

 var tmp = new Array();  

 tmp[0] = "%THEME%";  tmp[1] = system.convertRealPath(tmp[0]);

 aList[5] = tmp;

 

 var tmp = new Array();  

 tmp[0] = "%CACHE%";  tmp[1] = system.convertRealPath(tmp[0]);

 aList[6] = tmp;

 

 return aList;

}

/*******************************************************************************
 ★ 설명
    sPath에 해당하는 모든 하위 디렉토리에 대하여
    File 및 Directory 리스트를 가져와서 oDataset에 담는다.
 ★ Parameter
    1. sPath    : 리스트를 가져올 Path = 절대 Path로 줄 것
    2. oDataset : 리스트를 담을 Dataset Object
                  Column = level, dir, file, size, fgbn
                  ( Column이 없으면 만들어 줌 )
                  ( fgbn = 파일 구분 : "d" = 디렉토리, "f" = 파일 )
    3. _level   : 내부적으로 재귀호출시에만 사용함, 사용치 말것
 ★ return
    - 실패 = false
    - 성공 = true
 *****************************************************************************/

function FILEGetFileList(sPath, oDataset, _level)

{

 var flist, i;

 

 if( fn_IsNull(sPath) || fn_IsNull(oDataset) )

  return false;

 if( fn_IsNull(_level) )

 {

  _level = 0;

  

  // Column있는지 체크하고 만들기

  if( oDataset.getColumnInfo( "level" ) == null )

   oDataset.addColumn("level", "string");

  if( oDataset.getColumnInfo( "dir" ) == null )

   oDataset.addColumn("dir", "string");

  if( oDataset.getColumnInfo( "file" ) == null )

   oDataset.addColumn("file", "string");

  if( oDataset.getColumnInfo( "size" ) == null )

   oDataset.addColumn("size", "string");

  if( oDataset.getColumnInfo( "fgbn" ) == null )

   oDataset.addColumn("fgbn", "string");

  

  oDataset.clearData();  

 }

 

 flist = VirtualFile.getFileList(sPath, "*");

//alert(flist.length);

 for( i = 0 ; i < flist.length ; i++ )

 {

  row = oDataset.addRow();

  oDataset.setColumn(row, "level", _level);

  oDataset.setColumn(row, "dir", sPath);

  oDataset.setColumn(row, "file", flist[i].filename);

  oDataset.setColumn(row, "size", flist[i].size);

  if( flist[i].isDirectory() == true )

  {

   oDataset.setColumn(row, "fgbn", "d");

   FILEGetFileList(sPath+"\\"+flist[i].filename, oDataset, _level+1);

  }

  else

   oDataset.setColumn(row, "fgbn", "f");

 }

}

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > ETC' 카테고리의 다른 글

Nexacro.Array - 값 존재 위치(index)얻기  (0) 2017.02.09
Nexacro.Etc - Graphic  (0) 2017.01.28
Nexacro.Etc - 확장 비교함수  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.Etc -  확장 비교함수 ]

 

                        [  ◎ 확장 비교문 ]     

 

 

/*******************************************************************************
 ★ 설명
    MiPlatform의 iif()와 동일
******************************************************************************/

function fn_Iif( expr, v_true, v_false )

{

 return expr ? v_true : v_false;

}

 

/*******************************************************************************
  ★ 설명
     iif 비교 함수크
  ★ Parameter
    1. arg0   : true / false 를 판단 하는 값 ( 예 : 1 == 2 )
    2. arg1   : true 일경우 리턴
    3. arg2   : false 일경우 리턴됨)
  ★ return
    - true 일경우 arg1 리턴
    - false 일경우 arg1 리턴
  ******************************************************************************/

 function iif()

 {

         var varRtnValue = null;

 

        var arrArgument = iif.arguments;

 

        if(arrArgument[0]) {

                 return arrArgument[1];

         } else {

                 return arrArgument[2];

         }

 }

/*******************************************************************************
 ★ 설명
    MiPlatform의 decode()와 동일
******************************************************************************/

function fn_Decode( )

{

 var i, fn;

 fn = Decode;

 for( i = 1 ; i < fn.arguments.length ; i+=2 )

 {

  if( fn.arguments[0] == fn.arguments[i] )

   return fn.arguments[i+1];

 }

 return fn.arguments[i-2];

}


/*******************************************************************************
  ★ 설명
     decode 비교 함수
  ★ Parameter
    1. arg0   : 비교 할 변수
     2. arg1   : 비교 대상 변수
     3. arg2   : 비교 대상 변수가 같을 경우 리턴할 값
     4. 반복..
  ★ return
    - 비교 대상 변수가 같을 경우 값 리턴
  ******************************************************************************/

 function decode()

 {

         var varRtnValue = null;

 

        var arrArgument = decode.arguments;

         var varValue = arrArgument[0];

         var bIsDefault = false;

         var nCount = 0;

 

        if((arrArgument.length % 2) == 0) {

                 nCount = arrArgument.length - 1;

                 bIsDefault = true;

         } else {

                 nCount = arrArgument.length;

                 bIsDefault = false;

         }

 

        for(var i = 1; i < nCount; i+=2) {

                 if(varValue == arrArgument[i]) {

                         varRtnValue = arrArgument[i+1];

                         i = nCount;

                 }

         }

 

        if(varRtnValue == null && bIsDefault) {

                 varRtnValue = arrArgument[arrArgument.length-1];

         }

 

        return varRtnValue;

 }

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > ETC' 카테고리의 다른 글

Nexacro.Array - 값 존재 위치(index)얻기  (0) 2017.02.09
Nexacro.Etc - Graphic  (0) 2017.01.28
Nexacro.Etc - 파일관리  (0) 2017.01.28
Posted by 농부지기
,