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 가 들어가게 할려고 하는 방법에 대해서입니다.
제 생각은 어느 길이부터 어느 길이까지 분리해서 읽으면 될거 같은데
공백처리를 어떻게 해야 하는지 감이 안잡혀서요..
좋은 생각 부탁드립니다.
> 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함수를 써서 분리해내는 방법이죠.
이상 설명은 텍스트파일의 데이터가 고정포맷이라는 가정하에 설명입니다.