2017-03-10 3 views
0

이 코드는 객체의 위치를 ​​ini 파일에 저장하지만 이미 저장된 파일을 덮어 쓰려고하면 현재 파일에있는 데이터를 삭제하지 않습니다.INI 파일을 덮어 쓰는 법

사용자에게 덮어 쓰기를 원하지만 전체 파일을 지우지는 못하도록 묻는 팝업이 있는데 어떻게 바꿀 수 있습니까?

procedure TForm1.Save(const FileName: string); 
var 
    Ini: TMemIniFile; 
    I: Integer; 

procedure WhatYouAreSaving(Object: TButton); 
    var 
    Section: string; 
    begin 
    Section := 'Object' 
    //Properties you want to save go here 
    end; 

begin 
    Ini := TMemIniFile.Create(FileName); 
    ////For reference, the answer provided would go here 
    try 
    WhatYouAreSaving(Object); 
    Ini.UpdateFile; 
    finally 
    Ini.Free; 
    end; 
end; 
+0

관련 코드를 표시하지 않았습니다. –

+0

@FreeConsulting saveseatingplan 절차가 필요합니까? –

+0

@FreeConsulting saveseatingplan 프로 시저를 추가했습니다 –

답변

3

가의 INI 파일의 내용을 삭제 Ini := TMemIniFile.Create(FileName);

는 모든 데이터를 삭제합니다 Ini.Clear 후 호출하려면 :

procedure TForm1.SaveFile(Sender: TObject); 
var 
    Dialog : TSaveDialog; 
begin 
    Dialog := TSaveDialog.Create(self); 
    try 
    //dialog properties go here 
    Dialog.Filter := 'Title (*.ini)|*.ini'; 
    Dialog.Options := Dialog.Options + [ofOverwritePrompt]; 
    if Dialog.Execute then 
    begin 
     //any saving procedures go here if required 

     ShowMessage('File saved: ' + Dialog.FileName); 
    end 
    else 
     ShowMessage('Save file was cancelled'); 
    finally 
    Dialog.Free; 
    end; 
end; 

다음 절차는 파일 자체에 개체를 저장 INI 파일을 메모리에 저장합니다.

을 호출하면 현재 메모리에 버퍼 된 INI 파일의 모든 데이터가 지워집니다. 모든 섹션, 키 및 값이 지워집니다.


TMemIniFile.EraseSection를 사용하여 INI 파일에 섹션을 삭제합니다.

+0

그리고 전체 INI 파일의 내용을 지우고 싶지는 않지만 그 중 일부만 삭제하려면 대신 섹션 지우기를 사용하는 것이 좋습니다. http://docwiki.embarcadero.com/Libraries/Berlin/en/System.IniFiles. TMemIniFile.EraseSection – SilverWarior

+0

@SilverWarior, 감사합니다, 대답이 업데이트되었습니다. –

관련 문제