NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    C# C# .NET 매크로 프로그램 만들기. (배열에서 데이터를 삭제하기)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 배열에서 데이터를 삭제하는 액션을 만들어 볼께요. 배열에 대한 기초(?)적인 설명은 이 전글을 참고해주세요. 바로 코드를 보죠~

    public class ArrayRemoveModel : BaseModel
    {
        [NonSerialized]
        private string[]? _datas;
    
        [LocalizedCategory("Data")]
        [LocalizedDisplayName("Result")]
        [LocalizedDescription("Result")]
        [Browsable(true)]
        [DefaultValue(null)]
        public string[]? Result { get; set; }
    
        [LocalizedCategory("Array")]
        [LocalizedDisplayName("RepeatData")]
        [LocalizedDescription("RepeatData")]
        [Browsable(true)]
        [DefaultValue(null)]
        public string[]? ArrayData { get { return _datas; } set { _datas = value; } }
    
        [LocalizedCategory("Array")]
        [LocalizedDisplayName("ArrayAddLocation")]
        [LocalizedDescription("ArrayAddLocation")]
        [Browsable(true)]
        [DefaultValue(typeof(Ai.Definition.ArrayOption), "Last")]
        public Ai.Definition.ArrayOption RemoveLocation { get; set; } = Definition.ArrayOption.Last;
    
        [LocalizedCategory("Array")]
        [LocalizedDisplayName("ArrayIndex")]
        [LocalizedDescription("ArrayIndex")]
        [Browsable(true)]
        [DefaultValue(0)]
        public int Index { get; set; }
    
        [LocalizedCategory("Array")]
        [LocalizedDisplayName("ArrayValue")]
        [LocalizedDescription("ArrayValue")]
        [Browsable(true)]
        [DefaultValue(0)]
        public string? Value { get; set; }
    
        public override string? Execute(IPlayer player)
        {
            var id = base.Execute(player);
    
            List<string>? datas = _datas.ToList();
    
            switch (RemoveLocation)
            {
                case Definition.ArrayOption.First:
                    datas.RemoveAt(0);
                    break;
                case Definition.ArrayOption.Last:
                    datas.RemoveAt(datas.Count - 1);
                    break;
                case Definition.ArrayOption.Index:
                    datas.RemoveAt(Index);
                    break;
                case Definition.ArrayOption.Values:
                    datas.RemoveAll(x => x == Value);
                    break;
                case Definition.ArrayOption.FirstValue:
                    datas.RemoveAt(datas.IndexOf(Value));
                    break;
                    case Definition.ArrayOption.LastValue:
                    datas.RemoveAt(datas.LastIndexOf(Value));
                    break;
                case Definition.ArrayOption.Clear:
                    datas.Clear();
                    break;
            }
            
            Result = datas.ToArray();
    
            return id;
    
        }
    }

     

    코드는 딱히 설명할만한 내용이 없습니다. 닷넷 개발을 조금이라도 해보신분이거나 자바? 자바스크립트? 아무튼, 코딩을 해봤다면 내게 필요한 라이브러리나 패키지를 추가하고 해당 클래스를 인스턴스화 한 다음에 점을 찍으면 인텔리센스가 작동하면서 어떤것들을 사용할 수 있는지 알려줍니다. 코딩 정말 쉽죠~~~?

     

     

    요즘 유튜브 동영상 편집에 재미들려서 자꾸 뭔가를 만들게 되네요. 할일도 많은데... 생각보다 많은 시간을 빼앗기고 있습니다. 그래서 부족한 시간을 어떻게 채워야 할까 고민하고 있는데요. 일단, 운동과 코딩 시간은 줄일 수 없으니 TV 보는 시간과 주말 휴식 시간을 줄여야겠군요. 올해안에 엔지엠 7을 완성하려면 좀 더 바짝 일해야겠습니다.

     

    위의 코드에서 중요한 부분은 RemoveLocation입니다. 음... 지금보니 프로퍼티 이름이 마음에 안드는군요. 일단 넘어갑시다.

    [LocalizedCategory("Array")]
    [LocalizedDisplayName("ArrayAddLocation")]
    [LocalizedDescription("ArrayAddLocation")]
    [Browsable(true)]
    [DefaultValue(typeof(Ai.Definition.ArrayOption), "Last")]
    public Ai.Definition.ArrayOption RemoveLocation { get; set; } = Definition.ArrayOption.Last;

     

    배열 삭제에 대한 옵션은 총 7가지예요. 기능 하나당 한줄정도 코딩하면 모두 구현할 수 있습니다.

    public enum ArrayOption
    {
        First = 0,
        Last = 1,
        Index = 2,
        Values = 3,
        FirstValue = 4,
        LastValue = 5,
        Clear = 6
    }

     

    이제 완성된 내용을 테스트 해볼께요.

     

     

    아직 많은 부분을 수정하고, 개선해야 하지만 빨리 시제품을 출시해서 시장의 반응을 보고 하나씩 발전시켜 나가는게 좋은 방법입니다. 엔지엠 매크로도 처음 버전 1부터 현재 버전 6까지 그렇게 발전 해왔으니까요. 앞으로도 계속 이렇게 발전 시키면서 버전이 늘어나다보면 언젠가는... 음~ 미래는 알 수 없긴합니다. 이제 내년에는 50대에 들어서기도 하고, 언제까지 계속 할 수 있을지도 모르니까요. 개발자를 채용하거나 파트너를 구해서 같이 해야할지도 모르겠습니다.^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.