안녕하세요..
델파이 초보 입니다..^^;
어제부터 파일 컨트롤에 대해서 이것 저것 공부 해 보구 있는데, 잘 안되는 부분이 있어서 질문 올립니다.
일단 파일을 읽고 특정 부분의 위치로 이동해서 그 위치 이후에 있는 문자들을 access하는
프로그램을 해 보고 있는데, 어디서 잘 못됐는지 마지막 부분에 자꾸 이상한 문자들이 나오네요.
소스는 아주 간단합니다.
////////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
fh:Integer;
Buffer:array [1..1024] of char;
sTest:String;
iCount, ipos, iFsize:Integer;
begin
fh := fileopen('C:Project테스트.htm',fmOpenRead);
if fh <> -1 then begin
iCount := FileRead(fh,buffer,sizeof(buffer));
ipos := pos('--->',buffer);
//htm 파일에서 '--->' 가 있는 곳의 위치를 찾습니다.
iFsize := FileSeek(fh,0,2);
sTest := copy(Buffer,ipos+4,iFsize);
showmessage('['+sTest+']');
//여기서 테스트로 출력의 해 보면 뒤에 있는 ']' 부분이 출력이 되지 않습니다.
//확인해 보니까 마지막에 이상한 문자가 들어있던데...왜 그러는 건지 이유를 모르겠네요...-.-;
fileclose(fh);
end
else begin
showmessage('파일 오픈중 에러가 발생했습니다.');
fileClose(fh);
end;
end;
////////////////////////////////////////////////////
그럼 고수님들의 도움을 부탁드립니다.
좋은 하루되세요..^^
음 아래의 내용을 보면 산수계산이 좀 틀린것 같네염.
iCount := FileRead(fh,buffer,sizeof(buffer));
ipos := pos('--->',buffer);
//htm 파일에서 '--->' 가 있는 곳의 위치를 찾습니다.
iFsize := FileSeek(fh,0,2);
sTest := copy(Buffer,ipos+4,iFsize);
위 부분에서 iFSize는 화일의 크기인것 같습니다.
근데.. 분명히 읽어 오신 내용에서 iPos + 4부터 나머지 부분만을 읽어야하는데 이를 무시하고 전체 화일 크기 만큼 읽어 오기 때문에 ShowMessage부분에서 미쳐 다 화면에 출력할수 없어서 짤려 보이는것 같습니다.
따라서 아래 와 같이 수정 하면 간단히 수정이 될것 같네염.
iFsize := FileSeek(fh,0,2) - iPos + 4; <-- 이부분을 수정
sTest := copy(Buffer,ipos+4,iFsize);
도움이 되시길..