Q&A

  • [질문]Tmemo에서 받던 값을 그대로 test.txt 파일로 만들고 싶은데요
예전에 한번 했던 적이 있는데
우찌된 일인지 도통 못하고 있네요 ㅠㅠ

While 검색시작일 <= 검색종료일 do
begin
if 조건 then
  Memo1.lines.add('test1!!');

if 조건 then
  Memo1.lines.add('test2!!!');

검색시작일 = 검색시작일 + 1;
end;

검색기간이 길고,데이타가 많으면 Tmemo에 찍히는게 바로바로 보이질 않고,
그프로그램을 돌려놓고 다른일도 하려 왔다갔다 하다보면 화면이 멈춰져 있는것처럼 보여
확인하기가 힘이들고, 또 중간에 자꾸 인터넷이 끊기거나 서버를 끄는 경우가 생겨버리면
어디서 끊어졌는지를 확인하기 어렵더라구요.
그래서 파일(test.txt)로 담을려고 합니다.
새로운 어플리케이션을 열어
procedure TForm1.Button1Click(Sender: TObject);
var
FH :TextFile;
MyStr: String;

begin

        AssignFile(FH, 'C:\test.txt');
        Append(FH);
        WriteLn(FH, 'test1');
        WriteLn(FH, 'test2');
        CloseFile(FH);
end;

실행이 잘됩니다.
그런데 기존 프로그램 루프안에 넣어서 돌리면 I/O error 103 이 나면서 실행이 안됩니다.
파일명 조차도 생성이 안돼요.

팁/테크와 묻고답하기를 찾아보아도..제가 응용을 할줄 모르는건지 못찾았네요.
어떻게 하면 메모장에 한줄할줄 찍히듯이 파일(test.txt)로 만들수 있는지 조언좀 부탁드립니다.
4  COMMENTS
  • Profile
    steps 2008.09.12 04:40
    <!--CodeS-->
    AssignFile(FH, 'C:\test.txt');
    Append(FH);
    While 검색시작일 <= 검색종료일 do
    begin
    if 조건 then WriteLn(FH, 'test1');
    if 조건 then WriteLn(FH, 'test2');

    검색시작일 = 검색시작일 + 1;
    end;

    CloseFile(FH);
    <!--CodeE-->
    버그나올 이유가 없는데요? 혹 루프가 잘못 걸려서 append가 반복되거나 closefile이 루프안에 들어가지 않으셨는지요.
  • Profile
    홍성락 2008.09.12 04:54
    화면이 잠긴다면
    Application.ProcessMessages;와 Refresh를 적절히 사용하되 너무 자주도는 루틴에서는 시스템이 느려지니
    10번에 1번정도 이런식으로요 계산하면서요....
    또는 Gauge, 커서 모양등으로 진행하는 모습을 표시해주시는게 좋을듯하네요
    위분 말씀대로 파일제어를 엉키게하면 I/O 에러가 뜹니다, 그리고 소켓,이벤트등으로 받는 메세지 데이타는 손실 우려도 있습니다.
  • Profile
    이정욱 2008.09.12 10:21
    프로그램 OnCreate 시 Assign및 Append 하고, 종료시 CloseFile을 해보세요.
    아마 계속 호출 되다 보니, 만약 쓰레드 안에서 호출되는거라면 이미 열려진 상태에서 또 열려고 해서 하는것일 수도 있습니다.
  • Profile
    허접플그래머 2008.09.12 18:28
    답변 정말정말 감사드립니다. 다시 해보겠습니다.
    명절 잘 보내세요
    화이링^^
    • 석주현
      2008.09.15 09:45
      http://www.delphi.co.kr/zboard/view.php?id=qanda&no=101769 최용일님의 답변을 참조 하셔서 만드시...
    • 과학상자
      2008.09.15 23:47
      흑..T.T 잘모르겠어요..ㅠㅠ 소나기님.. a.exe -a d:\program1\;d:\program2\ 이렇게 입력하면 그부...
    • 정선봉
      2008.09.13 02:57
      Windows Vista에서 드라이버 설치를 하려고 합니다. Xp에서는 설치가 잘 되었습니다. procedure TForm1...
    • 홍성락
      2008.09.13 01:21
      Image1.Picture := TData_My(vList.Items[0]).Image.Picture; 이렇게 하면 보일겁니다.
    • 이은주
      2008.09.13 08:39
      ㅎㅎ 그렇게 간단한 거군요 감사합니다.
    • 석주현
      2008.09.12 20:34
      1. FileExists(파일이름) 을 하시면 일단 파일이 존재 유무가 나옵니다. 2. 경우는 정해진 포멧이 있...
    • 이혁진
      2008.09.12 20:52
      fileeq := FileExists(ckfa.bin); 이렇게 하면 되는 걸까요? 자꾸 ckfa 가 선언되어 있지 않다고 나와서...
    • 석주현
      2008.09.12 20:54
      아래와 같은 식으로 읽어서 처리하시면 됩니다. <!--CodeS--> procedure TfrmMain.btn2Click(S...
    • 석주현
      2008.09.12 20:55
      파일이름을 집어 넣으시려면 문자열이니 fileeq := FileExists('ckfa.bin'); 이렇게 해주셔야 합...
    • 이혁진
      2008.09.12 21:00
      FileEQ := FileExists('ckfa.bin'); 이렇게 해야 하는군요. 죄송합니다. ^^ + 앗 벌써 댓글이 정말 감사...
    • steps
      2008.09.12 04:40
      <!--CodeS--> AssignFile(FH, 'C:\test.txt'); Append(FH); While 검색시작일 <= 검색...
    • 홍성락
      2008.09.12 04:54
      화면이 잠긴다면 Application.ProcessMessages;와 Refresh를 적절히 사용하되 너무 자주도는 루틴에서는...
    • 이정욱
      2008.09.12 10:21
      프로그램 OnCreate 시 Assign및 Append 하고, 종료시 CloseFile을 해보세요. 아마 계속 호출 되다 보니,...
    • 허접플그래머
      2008.09.12 18:28
      답변 정말정말 감사드립니다. 다시 해보겠습니다. 명절 잘 보내세요 화이링^^
    • 이의성
    • 2008.09.11 22:59
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.12 11:26
      네... 그곳에 포함되어있지 않다면.. 없는 것 입니다..
    • 석주현
      2008.09.12 16:11
      KeyPress 이벤트에서 아래와 같이 입력을 숫자만 받는 방법이 있습니다. begin If Not (Key In ...
    • 이의성
      2008.09.12 19:29
      답변 감사합니다 ^^ 즐거운 명절 되세요~~
    • 소울해커
      2008.09.12 21:05
      XPMenu 라는 컴포넌트가 있습니다. 폼에다 던져 놓기만하면 말그대로 기본 컴포넌트들의 모습을 XP ...
    • 플루토
    • 2008.09.11 20:41
    • 2 COMMENTS
    • /
    • 0 LIKES
    • steps
      2008.09.11 21:01
      이미지파일의 확장자와 실제포맷이 일치하는가를 알자면 각 포맷의 헤더에서 식별자를 읽어내면 됩니다. ...
    • 플루토
      2008.09.12 01:04
      네, 감사합니다..^ ^
    • 석주현
      2008.09.10 21:12
      type SDLL_GetStatus = function(PSTATUS : Byte):boolean;stdcall; 저 같은 경우엔 이 Calling co...
    • 홍성락
      2008.09.10 21:29
      원형함수가 SDLL_API BOOL GetStatus(DT_STATUS *pStatus);이면 파라메다는 포인터형인거 같은데요. ....
    • 석주현
      2008.09.10 21:50
      전 저것도 못보고 Calling convention 부분만 생각하고 있었는데 진짜 그게 문제네요.. ^^ 아 창피해라.....
    • 신철우
      2008.09.10 22:03
      SDLL_GetStatus = function(PSTATUS : PSTATUS):boolean;stdcall; 에서 뭐가 잘못된건지? GetStatus(p...
    • 홍성락
      2008.09.10 22:36
      앗 실수...변수명과 형명이 같았네요.... ... type DT_STATUS = packed record bD...
    • 석주현
      2008.09.10 14:30
      TQuery 를 이용하여 SQL 쿼리 결과를 만들어서 DataSet 프로퍼티에 연결 하여 사용하면 됩니다.
    • 천천히
      2008.09.10 18:05
      소나기님..답변 감사드립니다... 그런데 데이터 행이 조회해서 여러개가 나왔는데 그걸 모두 qreport에...
    • 석주현
      2008.09.10 21:02
      제 설명보다 델파이 디렉토리에 Demos에 보면 Quick Report에 관한 예제가 있습니다. 확인해 보세요. ...
    • 박동호
    • 2008.09.10 01:19
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2008.09.10 02:20
      소스내에서나 사용한 DLL등의 소스에서 SendMessage로 검색하세요. 아니면 띄어쓰기를 바꿔가며 WM_USER...
    • 석주현
      2008.09.10 05:55
      SendMessage 가 없다면 PostMessage 도 한번 찾아 보세요. 보통은 WM_USER + 10 이걸 그냥 안쓰고 다...
    • 신재민
    • 2008.09.09 13:51
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 강중규
    • 2008.09.07 04:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.09.08 16:21
      인스톨 실드 버젼이 틀린거 같아 정확히 말씀드리기 힘든데요. Application 의 dat 디렉토리를 그냥 ...
    • 정경철
    • 2008.09.06 06:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이창엽
    • 2008.09.05 23:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김동원
      2008.09.09 17:08
      MFC71.dll은 Microsoft VisualStudio 2003.Net 버전의 RTL 입니다. Microsoft VisualStudio 6.0이 설치...
    • 이창엽
      2008.09.11 01:38
      답변 감사합니다.. 패치문제 였네요...ㅠㅠ 한글 최신버전으로 패치하니깐 문제가 해결
    • 이의성
    • 2008.09.05 20:15
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.09.05 22:05
      Win32 탭에 XPManifest 라는게 있는데 폼에 그냥 던져놓고 실행하면 비슷하게 나올겁니다. 개별적으로 ...
    • 이의성
      2008.09.05 22:18
      답변감사합니다~~ 그런데, Win32 탭에 XPManifest 라는게 없네요;; (Delphi6 입니다) ( 위쪽 모양이 깔...
    • 임형호
      2008.09.06 02:23
      위에껀 flatstyle 컴포넌트 같은데요. 기본컴포넌트를 저렇게 만드시는것보다는... 저런형태의 무료컴포...
    • 이의성
      2008.09.10 03:04
      감사합니다~~ 역시 요런 컴포넌트 있을거 같았는데 ^^;; 덕분에 정신건강에 많은 도움이 될 듯 싶습니...
    • 신철우
    • 2008.09.05 20:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.09.09 01:40
      잘되는데요. 아무래도 다른 문제 같습니다. 웹 브라우져에서 잘 열린다면 똑 같이 잘 열리는게 정상입니...
    • 소울해커
      2008.09.05 19:27
      Memo.Lines.SaveToFile('c:\rx.txt');
    • 김경석
      2008.09.06 16:11
      감사합니다.
    • steps
    • 2008.09.05 07:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • steps
      2008.09.05 23:51
      <!--CodeS--> AddFormField(`ImageSize0`, `100_80`); AddFormField(`ImageSize1` , `600_400`);...
    • steps
    • 2008.09.05 00:54
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.09.05 01:29
      KeyPreview속성을 True로 설정하세요. 그럼 폼이 먼저 메세지를 받습니다. 윈도우 메세지로 처리하는것...
    • steps
      2008.09.05 04:20
      최용일님 감사합니다. 그런데 폼에서도 마우스클릭시에 keyup 이벤트가 발생합니다. 제가 shift + clic...
    • 소울해커
      2008.09.05 05:06
      옛날에 좀 고민을 해봤었고 질문도 올려봤었는데 별다른 답변을 못들었던 부분입니다. 마우스를 눌렀는...
    • steps
      2008.09.05 06:35
      소울해커님 좋은 경험 잘 배웠습니다. 델파이건상수에 VK_LBUTTON, VK_RBUTTON, VK_MBUTTON 이 1, 2, 4 ...
    • 석주현
      2008.09.05 07:39
      TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble); 쉬프트 스...
    • 석주현
      2008.09.05 07:44
      어 해보니 진짜 Keyup에서만 이벤트가 발생하네요. 거참 하여간 해봐야 뭘 알겠으니 ㅠ_ㅠ
    • 이정욱
      2008.09.04 21:31
      TBitmap 의 Canvas 핸들로 엮어주시면 될거 같습니다. ^^