927 lines
59 KiB
C#
927 lines
59 KiB
C#
//using System;
|
|
//using System.Collections.Generic;
|
|
//using System.Diagnostics;
|
|
//using System.Globalization;
|
|
//using System.IO;
|
|
//using System.Linq;
|
|
//using System.Reflection;
|
|
//using System.Runtime.CompilerServices;
|
|
//using System.Security;
|
|
//using System.Text;
|
|
//using System.Threading.Tasks;
|
|
//using System.Collections;
|
|
|
|
//namespace Project
|
|
//{
|
|
// public class CParser
|
|
// {
|
|
// private string SrcText;
|
|
// private ArrayList CommandList; // //여기엔 Scommand 가 들어있다.
|
|
// private System.Text.StringBuilder ErrMsg;
|
|
// // Public Log As System.Text.StringBuilder
|
|
|
|
// public event MessageEventHandler Message;
|
|
// public void raiseMessage(string m, Boolean err)
|
|
// {
|
|
// if (Message != null) Message(m, err);
|
|
// }
|
|
// public delegate void MessageEventHandler(string M, bool Err);
|
|
|
|
// public CParser()
|
|
// {
|
|
|
|
// }
|
|
|
|
// public new string toString
|
|
// {
|
|
// get
|
|
// {
|
|
// if (this.isError == false)
|
|
// {
|
|
// object Value = ParseCommand(SrcText, true);
|
|
// return Value.ToString();
|
|
// }
|
|
// return "";
|
|
// }
|
|
// }
|
|
// public new object GetData
|
|
// {
|
|
// get
|
|
// {
|
|
// if (this.isError == false)
|
|
// {
|
|
// object Value = ParseCommand(SrcText, true);
|
|
// return Value;
|
|
// }
|
|
// return null;
|
|
// }
|
|
// }
|
|
// public bool isError
|
|
// {
|
|
// get
|
|
// {
|
|
// if (this.ErrMsg.ToString() != "")
|
|
// return true;
|
|
// else
|
|
// return false;
|
|
// }
|
|
// }
|
|
// private void Check_error(string vSrcText)
|
|
// {
|
|
// // Return '//임시로 해제
|
|
|
|
// int Lcnt = 0;
|
|
// int Rcnt = 0;
|
|
|
|
// ErrMsg = new System.Text.StringBuilder();
|
|
|
|
// return; //
|
|
// foreach (string EXP_ in vSrcText.Split(';')) // //각명령을 ;로 구분되어잇기떄문에 구분됫것들이 각자의 명령이다.
|
|
// {
|
|
// var EXP = EXP_.Trim();
|
|
// Lcnt = EXP.ToCharArray().Where(t => t == '(').Count();// MyString.GetInCountChar(EXP, "("); // //파라미터 시작갯수
|
|
// Rcnt = EXP.ToCharArray().Where(t => t == ')').Count();// MyString.GetInCountChar(EXP, ")"); // //파라미터 종료갯수
|
|
// if (Lcnt != Rcnt)
|
|
// ErrMsg.AppendLine(EXP + "파라미터 시작기호 ( 와 종료기호 ) 가 일치하지 않습니다");
|
|
// Lcnt = EXP.ToCharArray().Where(t => t == '"').Count();// MyString.GetInCountChar(EXP, Strings.Chr(34)); // //파라미터 시작갯수
|
|
// Rcnt = EXP.ToCharArray().Where(t => t == '"').Count();// MyString.GetInCountChar(EXP, Strings.Chr(34)); // //파라미터 종료갯수
|
|
// if (Lcnt != Rcnt)
|
|
// ErrMsg.AppendLine(EXP + "문자열묶음기호(\")가 일치하지 않습니다");
|
|
// }
|
|
// }
|
|
|
|
// public virtual void CommandText(string s)
|
|
// {
|
|
// SrcText = s;
|
|
// Check_error(SrcText);
|
|
// if (this.isError)
|
|
// Util.MsgE(ErrMsg.ToString());// Interaction.MsgBox(ErrMsg.ToString(), MsgBoxStyle.Critical, "오류");
|
|
// }
|
|
|
|
// protected string Buffer1 = "";
|
|
// protected string Buffer2 = "";
|
|
// protected string Buffer3 = "";
|
|
// protected string Buffer4 = "";
|
|
|
|
// private object ParseCommand(string vSrcText, bool isfirst, object NEwValue = null)
|
|
// {
|
|
// // //각명령어를 쪼갠다.
|
|
// // //중첩명령어의 경우에도 쪼갠다.
|
|
|
|
// // Dim Cmd As String '//명령어
|
|
// // Dim Param As String '//명렁파라미터
|
|
// // Dim target As String '//타겏값
|
|
// // Dim Str As String
|
|
// // Dim Line As String
|
|
|
|
// if (isfirst)
|
|
// this.CommandList = new ArrayList();// //처음에만 이것을 초기화한다.
|
|
|
|
// vSrcText = vSrcText.Replace("\r\n","\n");//Constants.vbCrLf, Constants.vbLf);
|
|
// vSrcText = vSrcText.Replace("\r","\n");//Constants.vbCr, Constants.vbLf);
|
|
// vSrcText = vSrcText.Replace("\n\n","\n");//Constants.vbLf + Constants.vbLf, Constants.vbLf);
|
|
// vSrcText = vSrcText.Replace(";","\n");// Constants.vbLf);
|
|
|
|
// raiseMessage("Command Expression : " + vSrcText, false);
|
|
// foreach (string EXP_ in vSrcText.Split('\n')) // //각명령을 ;로 구분되어잇기떄문에 구분됫것들이 각자의 명령이다.
|
|
// {
|
|
// if (EXP_.Trim() == "")
|
|
// continue;
|
|
// if (EXP_.Length < 3)
|
|
// continue;
|
|
// if (EXP_.Substring(0, 2) == "//")
|
|
// continue;
|
|
|
|
// // Me.Log.AppendLine("New Line Value is : " & NEwValue.ToString)
|
|
|
|
// var EXP = EXP_.Trim();
|
|
// bool CmdFind = false; // //명령어를다 찾앗는가?
|
|
// bool ParamFind = false;
|
|
// System.Text.StringBuilder NewParam = new System.Text.StringBuilder();
|
|
// bool Isfunction = false;
|
|
// bool IsFunctionEnd = false;
|
|
// short InnerFuncCnt = 0;
|
|
// System.Text.StringBuilder NewCmd = new System.Text.StringBuilder();
|
|
// ArrayList ParamList = new ArrayList();
|
|
// bool IsTextInner = false;
|
|
|
|
// if (EXP != "")
|
|
// {
|
|
|
|
// // My.Computer.FileSystem.WriteAllText("c:\command.txT", "expressiong=" & EXP, True)
|
|
|
|
// if (EXP.Substring(0, 1) == "\"")//Strings.Chr(34))
|
|
// NEwValue = EXP; // //해당문자자체가 값이된다.
|
|
// else
|
|
// // //파라미터란 ()사이의 명령어이며, 콤마(,)로 분리된다
|
|
// // //단 "" 사이의 콤마는 인정하지않는다.
|
|
|
|
// foreach (char C in EXP.ToCharArray())
|
|
// {
|
|
// if (CmdFind == false)
|
|
// {
|
|
// if (C == '(')
|
|
// CmdFind = true;
|
|
// else
|
|
// NewCmd.Append(C);
|
|
// }
|
|
// else
|
|
// switch (C)
|
|
// {
|
|
// case ',':
|
|
// {
|
|
// if (IsTextInner)
|
|
// NewParam.Append(C);
|
|
// else if (Isfunction == false)
|
|
// {
|
|
// if (IsFunctionEnd)
|
|
// ParamList.Add(NewParam.ToString()); // //파라미터를 찾았으므로 파람리스트에 추가한다.
|
|
// else
|
|
// ParamList.Add(NewParam.ToString());// //파라미터를 찾았으므로 파람리스트에 추가한다.
|
|
// NewParam = new System.Text.StringBuilder(); // //파라미터부분 초기화
|
|
// IsFunctionEnd = false;
|
|
// }
|
|
// else
|
|
// NewParam.Append(C);
|
|
// break;
|
|
// }
|
|
|
|
// case '(':
|
|
// {
|
|
// if (IsTextInner)
|
|
// NewParam.Append(C);
|
|
// else if (Isfunction)
|
|
// {
|
|
// InnerFuncCnt += 1;
|
|
// NewParam.Append(C);
|
|
// }
|
|
// else
|
|
// {
|
|
// Isfunction = true; // //이파라미터가 또 함수를 가지고있다 ㅠ_ㅠ;
|
|
// NewParam.Append(C);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case ')':
|
|
// {
|
|
// if (IsTextInner)
|
|
// NewParam.Append(C);
|
|
// else if (Isfunction)
|
|
// {
|
|
// if (InnerFuncCnt > 0)
|
|
// {
|
|
// InnerFuncCnt -= 1;
|
|
// NewParam.Append(C);
|
|
// }
|
|
// else
|
|
// {
|
|
// Isfunction = false; // //이파라미터가 또 함수를 가지고있다 ㅠ_ㅠ;
|
|
// IsFunctionEnd = true;
|
|
// NewParam.Append(C);
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// if (NewParam.ToString() != "")
|
|
// ParamList.Add(NewParam.ToString()); // //파라미터를 찾았으므로 파람리스트에 추가한다.
|
|
// NewParam = new System.Text.StringBuilder(); // //파라미터부분 초기화
|
|
// IsFunctionEnd = false;
|
|
|
|
// // MsgBox("명령어실행 : " & NewCmd.ToString)
|
|
// // //각 파라미터들의 값을 가져온다
|
|
// raiseMessage("New COmmand : " + NewCmd.ToString() + " paramCount=" + ParamList.Count, false);
|
|
// switch (NewCmd.ToString().ToUpper())
|
|
// {
|
|
// case "MUL":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("MUL 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// // Me.Log.AppendLine("MUL " & Param1 & vbTab & Param2)
|
|
|
|
// if (Param1.ToString().IsNumeric()==false || Param2.ToString().IsNumeric()==false)
|
|
// // Me.Log.AppendLine("MUL param error support only number")
|
|
// return 0;
|
|
// else
|
|
// NEwValue = System.Convert.ToDecimal(Param1) * System.Convert.ToDecimal(Param2);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "PLUS":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("PLUS 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
|
|
// if (Param1.ToString().IsNumeric()==false || Param2.ToString().IsNumeric()==false)
|
|
// return 0;
|
|
// else
|
|
// NEwValue = System.Convert.ToDecimal(Param1) + System.Convert.ToDecimal(Param2);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "MINUS":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("MINUS 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// // Me.Log.AppendLine("PLUS " & Param1 & vbTab & Param2)
|
|
// if (Param1.ToString().IsNumeric()==false || Param2.ToString().IsNumeric()==false )
|
|
// // Me.Log.AppendLine("MINUS param error support only number")
|
|
// return 0;
|
|
// else
|
|
// NEwValue = System.Convert.ToDecimal(Param1) - System.Convert.ToDecimal(Param2);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "ISEQULE":
|
|
// case "EQ" // //둘이 같은지 반환해준다.
|
|
// :
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("ISEQULE 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// // MsgBox(ParamList[1].ToString & "/" & NewValue)
|
|
// // Me.Log.AppendLine("ISEQULE " & Param1 & vbTab & Param2)
|
|
// if (Param1 != Param2)
|
|
// {
|
|
// raiseMessage("ISEQULE RETURN FALSE", true);
|
|
// return false;
|
|
// }
|
|
// else
|
|
// {
|
|
// raiseMessage("ISEQULE RETURN TRUE", true);
|
|
// return true;
|
|
// }
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "NEQ":
|
|
// case "DIFF" // //둘이 다르면 true 반환해준다.
|
|
// :
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("DIFF(NEQ) 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// // MsgBox(ParamList[1].ToString & "/" & NewValue)
|
|
// // Me.Log.AppendLine("ISEQULE " & Param1 & vbTab & Param2)
|
|
// if (Param1 != Param2)
|
|
// {
|
|
// raiseMessage("DIFF RETURN True", true);
|
|
// return true;
|
|
// }
|
|
// else
|
|
// {
|
|
// raiseMessage("DIFF RETURN False", true);
|
|
// return false;
|
|
// }
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "IF":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("IF 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// if (Param1.ToString().ToLower() != Param2.ToString().ToLower())
|
|
// {
|
|
// raiseMessage("IF문 조건이 서로 다르므로 실행을 종료합니다.", false);
|
|
// return ""; // //해당구문전체를 모두 FALSE한다.
|
|
// }
|
|
// else
|
|
// // RaiseEvent RaiseMessage("IF문 조건이 동일 True Case IN(" & Param1 & " " & Param2 & ")")
|
|
// Console.WriteLine("sdf");
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "IFNOT":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("IFNOT 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// if (Param1 == Param2)
|
|
// {
|
|
// raiseMessage("IF문 조건이 서로 같으므로 실행을 종료합니다.", true);
|
|
// return ""; // //해당구문전체를 모두 FALSE한다.
|
|
// }
|
|
// else
|
|
// {
|
|
// }
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "MSGBOX":
|
|
// case "MSG":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("MSGBOX 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// Util.MsgE(Param1, MsgBoxStyle.Information, "확인");
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "ISNUM":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("ISNUM 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = Information.IsNumeric(Param1);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "NVL":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("ISEMPTY 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// if (Param1.Trim() == "")
|
|
// NEwValue = Param2;
|
|
// else
|
|
// NEwValue = Param1;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "INDEXOF":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("INDEXOF 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1.IndexOf(Param2) + 1;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "LINDEXOF":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("LINDEXOF 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1.LastIndexOf(Param2) + 1;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "REPLACE":
|
|
// {
|
|
// if (ParamList.Count != 3)
|
|
// raiseMessage("REPLACE 함수에 3개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// object Param3 = RunParam(ParamList[2].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1.ToString().Replace(Param2, Param3);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "REMOVECHAR":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("REMOVESPACE 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1.Trim(Param2.ToCharArray()).ToString().Trim();
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "REMOVESCHAR" // //특수기호삭제한다.
|
|
// :
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("REMOVESCHAR 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// System.Text.StringBuilder NewString = new System.Text.StringBuilder();
|
|
// foreach (char Cc in Param1.ToCharArray())
|
|
// {
|
|
// switch (Strings.Asc(Cc))
|
|
// {
|
|
// case object _ when 65 <= Strings.Asc(Cc) && Strings.Asc(Cc) <= 90:
|
|
// case object _ when 48 <= Strings.Asc(Cc) && Strings.Asc(Cc) <= 57:
|
|
// case object _ when 97 <= Strings.Asc(Cc) && Strings.Asc(Cc) <= 122:
|
|
// case object _ when Strings.Asc(Cc) < 0:
|
|
// case 32:
|
|
// {
|
|
// NewString.Append(Cc);
|
|
// break;
|
|
// }
|
|
// }
|
|
// }
|
|
// NEwValue = NewString.ToString();
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "REMOVESPACE":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("REMOVESPACE 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1.Replace(Strings.Space(1), Constants.vbNullString);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "TOUPPER":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("TOUPPER 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1.ToUpper();
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "TRIM":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("TRIM 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1.Trim();
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "TOLOWER":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("TOLOWER 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1.ToLower();
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "LENB":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("LENB 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = System.Text.Encoding.Default.GetByteCount(Param1.ToString());
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "LEN":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("LEN 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1.Length;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "RIGHTADD":
|
|
// case "ADDRIGHT":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("RIGHTADD 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1 + Param2;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "ADDNUM":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("ADDNUM 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1 + Param2;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "LEFTADD":
|
|
// case "ADDLEFT":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("LEFTADD 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param2 + Param1;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "TODATE":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("TODATE 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = ((DateTime)Param1);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "TOSTRING":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("TOSTRING 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = (System.Convert.ToString(Param1));
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "TOINT":
|
|
// {
|
|
// if (ParamList.Count != 1)
|
|
// raiseMessage("TOINT 함수에 1개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// NEwValue = Param1;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "NOW":
|
|
// {
|
|
// NEwValue = DateTime.Now;
|
|
// break;
|
|
// }
|
|
|
|
// case "SUBSTRING":
|
|
// case "SUBSTR" // //2개의 파라미터를 사용한다.
|
|
// :
|
|
// {
|
|
// if (ParamList.Count < 2)
|
|
// raiseMessage("SUBSTRING 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// object param3 = "";
|
|
// if (ParamList.Count == 3)
|
|
// param3 = RunParam(ParamList[2].ToString(), NEwValue.ToString());
|
|
// if (Param1.Trim() == "" || Information.IsNumeric(Param2) == false || System.Convert.ToInt32(Param2) < 0)
|
|
// NEwValue = "";
|
|
// else if (param3 != "")
|
|
// {
|
|
// // //길이를 참고한다. 너무 긴건 처리하지 못하므로
|
|
// if (System.Convert.ToInt32(Param2) + System.Convert.ToInt32(param3) > Param1.Length)
|
|
// NEwValue = Param1.Substring(Param2, (Param1.Length - System.Convert.ToInt32(Param2)));
|
|
// else
|
|
// NEwValue = Param1.Substring(Param2, param3);
|
|
// }
|
|
// else
|
|
// NEwValue = Param1.Substring(Param2);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "SAVE1":
|
|
// {
|
|
// if (ParamList.Count < 1)
|
|
// Util.MsgE("SAVE1 함수에 1개의 파라미터가 없습니다");
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// Buffer1 = Param1;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "SAVE2":
|
|
// {
|
|
// if (ParamList.Count < 1)
|
|
// Util.MsgE("SAVE1 함수에 1개의 파라미터가 없습니다");
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// Buffer2 = Param1;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "SAVE3":
|
|
// {
|
|
// if (ParamList.Count < 1)
|
|
// Util.MsgE("SAVE1 함수에 1개의 파라미터가 없습니다");
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// Buffer3 = Param1;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "SAVE4":
|
|
// {
|
|
// if (ParamList.Count < 1)
|
|
// Util.MsgE("SAVE1 함수에 1개의 파라미터가 없습니다");
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// Buffer4 = Param1;
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "LEFT" // //2개의 파라미터를 사용한다.
|
|
// :
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("LEFT 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// NEwValue = Strings.Left(Param1, Param2);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "RIGHT" // //2개의 파라미터를 사용한다.
|
|
// :
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("RIGHT 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// var Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString()).ToString();
|
|
// var Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString()).ToString();
|
|
// NEwValue = Param1.Substring(Param1.Length-int.Parse(Param2));// Strings.Right(Param1, Param2);
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "MID": // //2개의 파라미터를 사용한다.
|
|
// {
|
|
// if (ParamList.Count != 3)
|
|
// raiseMessage("MID 함수에 3개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// var Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// var Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
// var Param3 = RunParam(ParamList[2].ToString(), NEwValue.ToString());
|
|
// if (Param2 == "-1" || int.Parse(Param3.ToString()) < 1)
|
|
// {
|
|
// raiseMessage("MID 함수의 시작위치값은 0이상이여야합니다\nMID 함수의 추출길이는 1이상이여야합니다", true);
|
|
// NEwValue = "";
|
|
// }
|
|
// else
|
|
// NEwValue = Param1.ToString().Substring(int.Parse(Param2.ToString()), int.Parse(Param3.ToString()));
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// case "FORMAT":
|
|
// {
|
|
// if (ParamList.Count != 2)
|
|
// raiseMessage("FORMAT 함수에 2개의 파라미터가 없습니다", true);
|
|
// else
|
|
// {
|
|
// object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
|
|
// object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
|
|
|
|
// // MsgBox(Param1 & "/" & Param2)
|
|
// if(Param1.GetType()== typeof(int))
|
|
// NEwValue = ((int)Param1).ToString(Param2.ToString());
|
|
// else
|
|
// NEwValue = Param1.ToString();
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// default:
|
|
// {
|
|
// //raiseMessage("미지원 함수 입니다")
|
|
// raiseMessage("미지원 : " + NewCmd.ToString(),true);
|
|
// break;
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// break;
|
|
// }
|
|
|
|
// default:
|
|
// {
|
|
// if (C == '"')
|
|
// {
|
|
// IsTextInner = !IsTextInner;
|
|
// NewParam.Append(C);
|
|
// }
|
|
// else if (IsFunctionEnd)
|
|
// raiseMessage("내부한수 종결문다음에 , 가 와야하는데 " + C + "가 왔습니다", true);
|
|
// else
|
|
// NewParam.Append(C);
|
|
// break;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// // Me.Log.AppendLine("ParseCOmmand Return : " & NEwValue.ToString)
|
|
// return NEwValue;
|
|
// }
|
|
|
|
// public object RunParam(string vParam, string SrcValue)
|
|
// {
|
|
// // My.Computer.FileSystem.WriteAllText("c:\log.txT", "runparam param=" & vParam, True)
|
|
// vParam = vParam.Trim();
|
|
// if (vParam == "")
|
|
// return "";
|
|
// if (vParam.Substring(0, 1) == "\"")
|
|
// return vParam.Replace("\"", "");
|
|
// if (vParam.ToUpper() == "TRUE")
|
|
// return true;
|
|
// if (vParam.ToUpper() == "FALSE")
|
|
// return false;
|
|
|
|
// // //시작값이 숫자라면 이건 숫자값이다.
|
|
// if (vParam.Substring(0, 1).IsNumeric() == true)
|
|
// return vParam;
|
|
|
|
// // //시작값이 # 라면 원본 데이터이다.
|
|
// if (vParam == "#")
|
|
// return SrcValue;
|
|
// if (vParam == "#1")
|
|
// return Buffer1;
|
|
// if (vParam == "#2")
|
|
// return Buffer2;
|
|
// if (vParam == "#3")
|
|
// return Buffer3;
|
|
// if (vParam == "#4")
|
|
// return Buffer4;
|
|
|
|
// // //시작값이 숫자도 일반 문자도 공백도 아니라면 영문단어이다.
|
|
// // // ( 가 있다면 함수이므로 함수를 실행한다.
|
|
// switch (vParam.ToUpper())
|
|
// {
|
|
// case "NOW" // //date 타입을 반환한다.
|
|
// :
|
|
// {
|
|
// return DateTime.Now;
|
|
// }
|
|
|
|
// default:
|
|
// {
|
|
// if (vParam.IndexOf("(") != -1)
|
|
// return this.ParseCommand(vParam, false, SrcValue);
|
|
// else
|
|
// return "";// return RunUnknown(vParam, SrcValue);// //비지원 목록으로 반환한다.
|
|
// break;
|
|
// }
|
|
// }
|
|
// return "";
|
|
// }
|
|
|
|
// }
|
|
//}
|
|
|