Witam.
Mam problem związany z zapisem ustawień do pliku ini, a dokładniej:
Jak program się uruchomi i go zamknę to plik normalnie się zapiszę, lecz gdy otwieram plik w programie przez OpenDialog1 do Memo1 lub jak zapisuje plik przez SaveDialog1 to plik ten się nie zapisuje.
Proszę o pomoc.
Tutaj dodaje kod, który mam w programie z dodatkiem biblioteki registy.hpp
#include <registry.hpp>
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Form1->OpenDialog1->Execute())
{
try
{
Form1->Memo1->Lines->LoadFromFile(Form1->OpenDialog1->FileName);
}
catch(...)
{
ShowMessage("Wystąpił błąd podczas otwierania pliku. Sprawdź czy plik znajduje się na dysku.");
Form1->Memo1->Lines->Clear();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TIniFile* ini = new TIniFile(GetCurrentDir() + "\\settings.ini");
Left = ini->ReadInteger("Main", "Left", 350);
Top = ini->ReadInteger("Main", "Top", 350);
Width = ini->ReadInteger("Main", "Width", 650);
Height = ini->ReadInteger("Main", "Height", 450);
delete ini;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
TIniFile* ini = new TIniFile(GetCurrentDir() + "\\settings.ini");
ini->WriteInteger("Main", "Left", Form1->Left);
ini->WriteInteger("Main", "Top", Form1->Top);
ini->WriteInteger("Main", "Width", Form1->Width);
ini->WriteInteger("Main", "Height", Form1->Height);
delete ini;
}
//---------------------------------------------------------------------------
Dodam też, że zauważyłem ze jak program włączę i wyłączę to plik settings.ini się zapisuje, a jak otworze jakiś plik lub go zapiszę np. na pulpicie to plik settings.ini zapisze się na pulpicie co powoduje, że program wraca do poprzednich ustawień, gdyż wczytuje on plik ini zapisany w folderze programu.
Jak tą linijkę kodu:
TIniFile* ini = new TIniFile(GetCurrentDir() + "\\settings.ini");
zastąpię w ten sposób
TIniFile* ini = new TIniFile("settings.ini");
To plik settings.ini zapisuje się gdzieś w na dysku C, że ciężko go znaleść.
Myślę że funkcja GetCurrentDir() pamięta ostatni wybrany folder, w tym przypadku np. pulpit i tam zapisuje plik ini.
Czy jest jakieś wyjście z tego problemu lub czy istnieje jakaś inna funkcja, która za każdym razem zapisze ini do folderu z programem?