2016-06-23 6 views
-2

나는 lazarus를 사용하고 있으며 프로그램이 닫힐 때 txt 파일에 정보를 저장하려고합니다. 그러나 프로그램을 다시 열 때마다 txt 파일에 이전에 있던 내용을 덮어 씁니다. 다음 줄에 쓰거나 매번 다른 txt 파일을 만드는 것이 좋습니다.lazarus/delphi (pascal) - 다음에 덮어 쓰지 않고 txt 파일에 쓰기

var 
    ... 
    s: TStringList; 

    s:= TStringList.Create; 
    s.Add(datetostr(now)); 
    s.SaveToFile(datetostr(now)+'.txt'); 
    s.Free; 

을하지만, 나에게 오류

+0

파일 스트림 열기, 끝까지 검색, 스트림에 저장 –

+0

오류가있는 경우 그 내용을 볼 수 있습니다. 우리는 할 수 없습니다. 우리는 추측 할 것인가? 오류 메시지를 읽었습니까? 문자열에 날짜가있는 경우 경로 구분 기호가있을 수 있습니다. 왜 우리는 추측 할 필요가 있습니다. –

+1

모든 컴파일러 오류 메시지를 확인했지만 "오류"메시지를 찾을 수 없습니다. –

답변

2

을 제공 i'ts 당신이해야 할 모든 텍스트를 추가 한 후 추가 모드에서 파일을 열고입니다 : 이것은 내가 가지고있는 것입니다. 그것은 파일의 끝에 새로운 데이터를 저장합니다 :

AssignFile(tfOut, C_FNAME); 

    try 
    // Open for append, write and close. 
    append(tfOut); 

    writeln(tfOut, 'New data for text file'); 
    writeln(tfOut, 'New informtion should be at the end of the file.'); 

    CloseFile(tfOut); 

    except 
    on E: EInOutError do 
    writeln('File error. Elaboration: ', E.Message); 
    end; 
+0

except 절의 WriteLn은 콘솔 응용 프로그램에 적합합니다. op의 응용 프로그램이 VCL 응용 프로그램이면 그렇지 않습니다. –

+0

대단히 죄송합니다. 죄송합니다. 오류를 쓰지 않은 분은 모두 .. –

0

TStringList를를 사용하는 또 다른 방법은 다음과 같습니다

의 : TStringList를;

s : = TStringList.Create;

s.loadfromfile ('myfile.name');

s.Add (datetostr (now));

(또는 s.text = s.text lineending + + datetostr (현재))

s.SaveToFile ('myfile.name');

s.Free;

관련 문제