AutomateOne 2.0 배열 오류에 원인을 알 수 있을까요?



  • ※ 이 글은 기존에 있었던 문의 사항을 재구성하여 정리한 것입니다.

    AutomateOne 2.0 사용하는데 배열관련 문의사항이 있습니다.

    <문의 내용>

    1. 엑셀에서 불러온 값을 배열에 입력하는 로직입니다.

    AutomateOne 2.0 배열 오류에 원인을 알 수 있을까요.png

    • 두개의 배열을 생성한 후 값을 따로 넣으면 데이터가 입력 됩니다.

    AutomateOne 2.0 배열 오류에 원인을 알 수 있을까요2.png

    • 사진을 보시면 데이터가 입력되어 출력되는 것을 확인 할 수 있습니다.

    AutomateOne 2.0 배열 오류에 원인을 알 수 있을까요3.png

    • 배열을 한 개 생성한 후 값을 입력하면 공백 처리 해놓은 부분을 0이 오게 스크립트를 만들어 놨는데 공백으로 값이 들어가고 있습니다.

    AutomateOne 2.0 배열 오류에 원인을 알 수 있을까요4.png

    • 사진을 보시면 지정한 값이 아닌 공백으로 데이터가 입력된 부분을 확인 할 수 잇습니다.

    이러한 현상이 발생하는 원인 파악 및 해결이 필요합니다.



  • 첨부하신 사진만으로는 정확한 상황 파악이 어렵습니다.
    스크립트 전체를 보내 주시지 않고 중간 만 보내 주셔서, 스크립트를 똑같이 재현 할 수 없어서 전체적인 내용은 파악이 안되지만 보내주신 캡처 내용을 기준으로 말씀을 드리겠습니다.

    질문1) 첫번째 화면에 표시된 변수 값과 2번째 화면에 표시된 변수 값이 동일하게 나오기를 기대 하시는 건 가요?
    2) Loop 내부에서 선언된 배열의 값을 초기화 하시고자 원하는 건가요?
    3) 배열을 만들기 위한 원본 데이터가 @Price:string@ 과 @price:string@ 2개가 있는데 두 변수 모두 같은 값을 가지고 있나요?
    (정확한 결과를 알기 위해서는 Price변수와 price변수에 들어 있는 값을 알아야 합니다.)

    만일 위 질문에 “예”라고 말씀 하신다면 화면에 나타난 결과에 대해 말씀을 드리겠습니다.
    먼저 배열을 선언 하신 후 배열 초기화로 @Price:string@.Split(‘\t’)과 @price:string@.Split(‘\t’)를 사용하셨고, 조건은 @Price:string@.Split(‘\t’)[@i:int@]라는 조건으로 하셨습니다.,
    또한 .Split()메소드 결과는 ArrInt와 Arrint1으로 받았습니다. 즉 ArrInt와 ArrInt1은 각각 다른 배열이며 다른 값으로 채워 집니다(Price와 price에 다른 내용이 저장 되어 있다고 한다면).
    즉 ((string[])@ArrInt1@)[0]과 ((string[])@ArrInt@)[4]는 다른 값이 나오게 됩니다. Price변수와 price변수에 어떤 값이 들어 있는지 보내 주지 않아서 화면 캡처의 결과가 다를 것 이라고 만
    말씀 드릴 수 있습니다.

    또한 Loop 내부에 ArrInt와 ArrInt1의 배열 요소에 값을 채우기 위해 @변수명:string@.Split(‘\t’) 매소드를 사용하셨는데, 이 메소드는 개별 배열 요소의 각각의 값을 채우는 매소드가 아닙니다.
    @변수명:string@.Split(‘\t’)는 변수 명에 저장된 문자열을 ‘\t’으로 잘라서 배열을 선언 및 초기화 하는 메소드 입니다.
    즉 위쪽 캡처에서 조건이 !=”” 일 때는 선언된 배열 AarrInt를 모두 @변수명:string@.Split(‘\t’)으로 초기화 하고, 조건이 ==”” 일 때는 선언된 배열 AarrInt1을 모두 초기화 합니다.
    몇 번을 되풀이 하더라도 결과는 변수명에 저장된 값으로 배열이 만들어 집니다.
    다시 말하면 @변수명:string@.Split(‘\t’)을 사용하시면 변수 선언 및 값 채우기가 모두 하나의 명령어로 완성 됩니다.
    Loop속에서는 @변수명:string@에 들어 있던 문자열의 조각이 .Split(‘\t’)메소드에 의해서 배열 요소에 잘 들어가 있는지 체크 하시면 됩니다.

    질문 하시는 요지가 무엇인지 정확히 파악되지 않아 우선 스크립트 명령어 사용법이 올바르지 않다는 것을 말씀 드립니다.


Log in to reply