procedure TForm1.FormCreate(Sender: TObject);
begin
HttpGet.GetFile;
sleep(3000);
while FileExists('test.txt') do
Memo1.Lines.LoadFromFile('test.txt');
end;
제가 위와 같은 코딩을 했습니다.
인터넷에서 test.txt 파일을 폼이 생성되면서 다운로드 받고
그 파일을 메모 폼에 넣게 했습니다.
그런데 문제가 있습니다.
처음 실행하면 test.txt 내용을 못 읽습니다.
그러나 두번째 실행하면 읽습니다.
즉, 처음 실행해서 다운을 받았는데 바로 진행이 넘어가
메모 폼에는 글이 입력이 안되고 두번째 실행하면 이미 다운받은 파일이
있기에 열리는 것 같습니다.
그래서 제가 위와 같은 while 문을
일단 코딩상 오류를 말씀드릴게요
while FileExists('c:test.txt') do 는 참일때 즉 파일이 있을때만 무한정 실행되므로 처음 파일을 받아올때 전송속도로 생성되지 않으면 기냥 지나갑니다. 또 2번째 실행할경우는 무한정 메모컴포넌트에 쓰고 나오질않아요.
그래서 이렇게 not붙이고 뒤에 ;를 쓰시면될것 같은데요.
while not FileExists('c:test.txt') do;
그러나 더 좋은 방법은 이런 무한정 기다리는 것보다 다른 좋은 방법을 써봐야하고요.
그래도 생각나지 않으면 읽어오는 버튼, 반영하는 버튼 따로사용하거나
이런종류의 무한 루프는 취소가능하도록 버튼을 만들어주면 될것같습니다.이때
다른 프로세스에 이벤트가 가능하도록 Application.ProcessMessages를 사용하면서요..
이순만 wrote:
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> HttpGet.GetFile;
> sleep(3000);
> while FileExists('test.txt') do
> Memo1.Lines.LoadFromFile('test.txt');
> end;
>
> 제가 위와 같은 코딩을 했습니다.
> 인터넷에서 test.txt 파일을 폼이 생성되면서 다운로드 받고
> 그 파일을 메모 폼에 넣게 했습니다.
> 그런데 문제가 있습니다.
> 처음 실행하면 test.txt 내용을 못 읽습니다.
> 그러나 두번째 실행하면 읽습니다.
> 즉, 처음 실행해서 다운을 받았는데 바로 진행이 넘어가
> 메모 폼에는 글이 입력이 안되고 두번째 실행하면 이미 다운받은 파일이
> 있기에 열리는 것 같습니다.
> 그래서 제가 위와 같은 while 문을