안녕하세요
맨날 눈팅으로 기존자료 검색하다가 처음으로 글 올려봅니다.
함수가 하는 역활은 아주 간단합니다.
파일이 없으면 생성하고, 파일이 있으면 append를 이용하여
원하는 문자열만 입력하려고 합니다.
그런데 처음에 파일이 없어서 생성하고 쓸 때는 1줄만 들어가는데,
append로 파일을 열어서 쓰면, 1줄만들어갈 것이 여러줄이 주루룩 들어갑니다.
append 쪽에서 브레이크 걸어서 디버깅을 하면 msg만 정확하게 출력이 됩니다.
이유를 잘 모르겠습니다.
도움을 바라며, 소스를 올려 봅니다.
//////////////////////
<!--CodeS-->
function SAVE_DEBUG_VPP(fName : String) : Boolean;
var
F, TF : TextFile;
strTmp,strFName ,strFName1 : String;
i,j : integer;
begin
Result := FALSE;
strTmp := '';
strFName := frmMain.cl_MODEL.Caption;
strFName1 := _ExecPath + 'DEBUG\ ' + strFName + fName + '.TXT';
_MODELLastUpdate := FormatDateTime('yyyy-mm-dd (ddd) AM/PM hh:mm:ss',Now);
if FileExists( strFName1 ) then //파일 유/무를 확인후 파일 생성하고 쓰던지, 있으면 이어서 쓴다.
begin
AssignFile(TF, strFName1 );
Append( TF ); //<-- append만 이용하면 여러줄이 계속 들어가네요
WriteLn(TF,_MODELLastUpdate);
WriteLn(TF, DMMData);
CloseFile(TF);
end
else
begin
AssignFile(F, strFName1 );
Rewrite( F );
WriteLn(F,_MODELLastUpdate);
WriteLn(F, DMMData);
CloseFile(F);
end;
Result := TRUE;
end;
<!--CodeE-->
음 제가 보기에는 소스로는 별 문제 없이 실행되는 거 같은데요
제가 테스트 한 소스는
procedure TForm1.Button1Click(Sender: TObject);
var
F : TextFile;
strTmp,strFName ,strFName1 : String;
_MODELLastUpdate : string;
Check : Boolean;
begin
strTmp := '';
strFName := Self.Caption;
strFName1:= 'd:\test.txt';
_MODELLastUpdate := FormatDateTime('yyyy-mm-dd (ddd) AM/PM hh:mm:ss',Now);
AssignFile(F, strFName1 );
if FileExists( strFName1 ) then
Append( F );
else
Rewrite( F );
WriteLn(F,_MODELLastUpdate);
WriteLn(F, 'test');
CloseFile(F);
end;
혹시 파일에 이렇게 표시되는데
2008-03-31 (월) PM 08:39:21
test
2008-03-31 (월) PM 08:39:33
test
아래와 같이 표시되길 원하시는 건지요?
2008-03-31 (월) PM 08:39:21 test
2008-03-31 (월) PM 08:39:33 test
그렇다면 Writeln 대신에 Write 함수를...
아니라면 다시 질문주세요 ^^ 확인해보도록 할게요