Q&A

  • 한줄의 문자열을 카운터의 순서대로 받을려면...?
12345678901234567890123456789012345678901234567890

문자열1 문자열2 문자열3

문자열1 문자열2 문자열3

문자열1 문자열3



위와 같은 text 형식의 문자열들을 한줄씩 읽어 받아들일려고 하는데



pos 와 같은 함수를 쓰면 문자열 변수를 3개 쓴다고 할때

첫번째 줄은 imsi1:=문자열1 imsi2:=문자열2 imsi3:=문자열3 로 들어가는데

세번째 줄은 imsi1:=문자열1 imsi2:=문자열3 imsi3:='' 로 들어가게 되잖아요.



그래서. 제가 질문할려는 것은 세번째 줄을 읽어 분리할때 변수 imsi3 에

문자열3 가 들어가게 할려고 하는 방법에 대해서입니다.



제 생각은 어느 길이부터 어느 길이까지 분리해서 읽으면 될거 같은데

공백처리를 어떻게 해야 하는지 감이 안잡혀서요..



좋은 생각 부탁드립니다.











2  COMMENTS
  • Profile
    이재식 2000.01.31 06:26
    석기명 wrote:

    > 12345678901234567890123456789012345678901234567890

    > 문자열1 문자열2 문자열3

    > 문자열1 문자열2 문자열3

    > 문자열1 문자열3

    >

    > 위와 같은 text 형식의 문자열들을 한줄씩 읽어 받아들일려고 하는데

    >

    > pos 와 같은 함수를 쓰면 문자열 변수를 3개 쓴다고 할때

    > 첫번째 줄은 imsi1:=문자열1 imsi2:=문자열2 imsi3:=문자열3 로 들어가는데

    > 세번째 줄은 imsi1:=문자열1 imsi2:=문자열3 imsi3:='' 로 들어가게 되잖아요.

    >

    > 그래서. 제가 질문할려는 것은 세번째 줄을 읽어 분리할때 변수 imsi3 에

    > 문자열3 가 들어가게 할려고 하는 방법에 대해서입니다.

    >

    > 제 생각은 어느 길이부터 어느 길이까지 분리해서 읽으면 될거 같은데

    > 공백처리를 어떻게 해야 하는지 감이 안잡혀서요..

    >

    > 좋은 생각 부탁드립니다.

    >

    >

    이재식 Wrote :

    안녕하세요?



    보니까 파일형식이 고정포맷인 것 같습니다.

    한줄을 읽어들여서 pos함수를 쓰셔서 문자열 3개로 정확히 분리를 하려는 것

    같습니다.

    그러나, pos함수를 쓰면 어짜피 반복문을 돌려야 할 것입니다.



    제 생각에는 그것보다는 이것이 어떨런지...

    우선 델파이에 C언어의 strtok함수같은것이 있는지 잘 모르기때문에

    코딩으로 한다면 이렇게 하시는 것이 좋을 듯 합니다.

    var

    imsi1 : string[크기1] ;

    imsi2 : string[크기2] ;

    imsi3 : string[크기3] ;



    가령, 크기1이란 숫자를 말하는 것인데요,

    문자열1의 시작위치서부터 문자열2의 시작위치 전까지의 칼럼수를 말하는 것입니다.

    이렇게되면 공백까지 공백까지 포함하게 되는 거죠.

    이건 나중에 Trim를 써서 제거하면 되죠.



    while Eof(FileHandle) do

    begin

    Read(FileHandle, imsi1) ;

    Read(FileHandle, imsi2) ;

    Read(FileHandle, imsi3) ;



    imsi1 := Trim(imsi1) ;

    imsi2 := Trim(imsi2) ;

    imsi3 := Trim(imsi3) ;



    ....



    ReadLn (FileHandle) ;

    end ;



    이렇게하면 정확히 문자열1은 imsi1에, 문자열2은 imsi2에, 문자열3은 imsi3에

    들어가는데, 만약에 한줄의 데이터가 문자열1 ~~공백~~ 문자열3 이런형식으로

    되어있다면 imsi2에는 공백이 들어가 있게 되는 것입니다.



    이 방법말고 다른 방법도 있습니다.

    한줄 읽어서 copy함수를 써서 분리해내는 방법이죠.



    이상 설명은 텍스트파일의 데이터가 고정포맷이라는 가정하에 설명입니다.



  • Profile
    김규학 2000.01.31 17:00
    저도 이 재식님이 사용하신 방법을 사용합니다만 이 재식님이 설명한 부분에 덧붙인다면 데이터 파일을 작성할 때 SPACE부분은 TAB키를 쓰지 않고 확실하게 SPACE를 먹여 주어여 합니다.

    그리고

    WHILE EOF(FILEHANDLE) DO

    READLN (FILEHANDLE, STRING1, STRING2, STRING3);

    으로 하시면 해결될 것 같네요.





    이재식 wrote:

    > 석기명 wrote:

    > > 12345678901234567890123456789012345678901234567890

    > > 문자열1 문자열2 문자열3

    > > 문자열1 문자열2 문자열3

    > > 문자열1 문자열3

    > >

    > > 위와 같은 text 형식의 문자열들을 한줄씩 읽어 받아들일려고 하는데

    > >

    > > pos 와 같은 함수를 쓰면 문자열 변수를 3개 쓴다고 할때

    > > 첫번째 줄은 imsi1:=문자열1 imsi2:=문자열2 imsi3:=문자열3 로 들어가는데

    > > 세번째 줄은 imsi1:=문자열1 imsi2:=문자열3 imsi3:='' 로 들어가게 되잖아요.

    > >

    > > 그래서. 제가 질문할려는 것은 세번째 줄을 읽어 분리할때 변수 imsi3 에

    > > 문자열3 가 들어가게 할려고 하는 방법에 대해서입니다.

    > >

    > > 제 생각은 어느 길이부터 어느 길이까지 분리해서 읽으면 될거 같은데

    > > 공백처리를 어떻게 해야 하는지 감이 안잡혀서요..

    > >

    > > 좋은 생각 부탁드립니다.

    > >

    > >

    > 이재식 Wrote :

    > 안녕하세요?

    >

    > 보니까 파일형식이 고정포맷인 것 같습니다.

    > 한줄을 읽어들여서 pos함수를 쓰셔서 문자열 3개로 정확히 분리를 하려는 것

    > 같습니다.

    > 그러나, pos함수를 쓰면 어짜피 반복문을 돌려야 할 것입니다.

    >

    > 제 생각에는 그것보다는 이것이 어떨런지...

    > 우선 델파이에 C언어의 strtok함수같은것이 있는지 잘 모르기때문에

    > 코딩으로 한다면 이렇게 하시는 것이 좋을 듯 합니다.

    > var

    > imsi1 : string[크기1] ;

    > imsi2 : string[크기2] ;

    > imsi3 : string[크기3] ;

    >

    > 가령, 크기1이란 숫자를 말하는 것인데요,

    > 문자열1의 시작위치서부터 문자열2의 시작위치 전까지의 칼럼수를 말하는 것입니다.

    > 이렇게되면 공백까지 공백까지 포함하게 되는 거죠.

    > 이건 나중에 Trim를 써서 제거하면 되죠.

    >

    > while Eof(FileHandle) do

    > begin

    > Read(FileHandle, imsi1) ;

    > Read(FileHandle, imsi2) ;

    > Read(FileHandle, imsi3) ;

    >

    > imsi1 := Trim(imsi1) ;

    > imsi2 := Trim(imsi2) ;

    > imsi3 := Trim(imsi3) ;

    >

    > ....

    >

    > ReadLn (FileHandle) ;

    > end ;

    >

    > 이렇게하면 정확히 문자열1은 imsi1에, 문자열2은 imsi2에, 문자열3은 imsi3에

    > 들어가는데, 만약에 한줄의 데이터가 문자열1 ~~공백~~ 문자열3 이런형식으로

    > 되어있다면 imsi2에는 공백이 들어가 있게 되는 것입니다.

    >

    > 이 방법말고 다른 방법도 있습니다.

    > 한줄 읽어서 copy함수를 써서 분리해내는 방법이죠.

    >

    > 이상 설명은 텍스트파일의 데이터가 고정포맷이라는 가정하에 설명입니다.

    >