문제

이 내보내기 파일 (이 산업의 표준) 형식의 내보내기 파일이 있으며 데이터베이스로 가져와야합니다. 파일은 기본적으로 다음과 같습니다.

DATRKAKT-START
  KAKT_LKZ  "D"
  KAKT_DAT_STAMM    "1042665"

  DATRKAIB-START
    KAIB_AZ "18831025"
    KAIB_STATUS_FM  2
    KAIB_KZ_WAE "E"
  DATRKAIB-END

  DATRKARP-START
    KARP_MELD   "831025"
    KARP_ST_MELD    "G"
  DATRKARP-END

...
DATRKAKT-END

총 1963 개의 다른 행을 가진 56 개의 섹션이 있으므로 1963 년의 속성을 가진 56 개의 클래스를 만들지 않습니다 ...이 파일을 어떻게 처리하여 객체와 같은 속성에 액세스 할 수 있습니까?

Datrkaib.Kaib_Status_Fm
Datrkarp.karp_St_Meld
도움이 되었습니까?

해결책

프로그래밍 언어를 사용하면 런타임에 클래스에 메소드를 추가하거나 클래스가 정의되지 않은 메소드에 대한 통화에 응답 할 수 없다면이를 수행 할 수있는 방법이 없습니다. C#이 당신이 이것을하도록하더라도, 당신은 어쨌든 유형의 안전과 지능적인 도움을 잃을 것입니다 (아마도 그것이 그렇게 작동하기를 원하는 이유 중 하나). 왜냐하면 그냥 계속해서 일부 데이터 구조로 읽지 않겠습니까? 내 성향은 값이나 다른 해시를 포함 할 수있는 해시가 될 것이므로 (vb)와 같은 전화를 받게됩니다.

Datrkakt("Lkz")
Datrkakt("Dat_Stam")
Datrkakt("Kaib")("Az")
Datrkakt("Kaib")("Status_Fm")

또는 모든 데이터 항목이 예제에서와 같이 고유하게 이름을 지정한다는 것을 알고 있다면 하나의 해시를 사용하십시오.

Datr("Kakt_Lkz")
Datr("Kakt_Dat_Stam")
Datr("Kaib_Az")
Datr("Kaib_Status_Fm")

모든 데이터 항목 이름의 열거를 작성하고

Datr(DatrItem.KAKT_LKZ)
Datr(DatrIrem.KAIB_STATUS_FM)

다른 팁

구조화 된 데이터처럼 보입니다. 검색을 실행하고 교체하고 간단한 XML로 변환합니다. 그런 다음 가져옵니다.

코드 파일을 생성하려는 경우 - 고려하십시오. 코드 스미스 - 나는 이것이 할 수 있다고 생각합니다.

나는 목록과 함께 갈 것이다 <name, list> 다양한 물체의 경우 튜플이 될 수 있습니다 <name, value> 또는 객체의 명명 된 목록.

자동 으로이 작업을 수행하지 않습니다.

모든 적절한 속성 (예 : datrdocument)을 포함하는 클래스를 만들고 datrReader 클래스 (XMLDocument/XMLREADER 클래스와 유사한 아이디어)를 만듭니다.

DatrReader는 파일 또는 스트림의 내용을 읽고 DatRDocument로 구문 분석해야합니다.

DatrDocument를 사용하여 스트림에 작성하는 Datrwriter 클래스를 작성할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top