geek225
geek225

Reputation: 157

Ini file Type name Expected C++

I hope that you can help me to resolve this compilation error.

I'm trying to test code taken from Embarcadero's official documentation website, which has at aim to test the TIniFile class.

However I get this error:

Unit2.cpp(76): parsing: TCustomIniFile * _fastcall Form2::OpenIniFileInstance().

Below is my code:

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include <IniFiles.hpp>

#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;

__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}

void __fastcall TForm2::btStoreClickClick(TObject *Sender)
{
    //First Edit of the file
     /* Open an instance */
    TCustomIniFile* SettingsFile = OpenIniFileInstance();

    // Store current form properties to be used in later sessions.
    try
    {
        SettingsFile->WriteInteger (Name, "Top", Top);
        SettingsFile->WriteInteger (Name, "Left", Left);
        SettingsFile->WriteInteger (Name, "Width", Width);
        SettingsFile->WriteInteger (Name, "Height", Height);
        SettingsFile->WriteString  (Name, "Caption", Caption);
        SettingsFile->WriteBool    (Name, "InitMax", WindowState == wsMaximized );
    }
    catch(Exception* e)
    {
    }

    delete SettingsFile;

}

void __fastcall TForm2::btLoadClick(TObject *Sender)
{
    TCustomIniFile* SettingsFile = OpenIniFileInstance();

    try
    {
        /*
        Read all saved values from the last session. The section name
        is the name of the form. Also use form's properties as defaults
        */
        Top     = SettingsFile->ReadInteger(Name, "Top", Top );
        Left    = SettingsFile->ReadInteger(Name, "Left", Left );
        Width   = SettingsFile->ReadInteger(Name, "Width", Width );
        Height  = SettingsFile->ReadInteger(Name, "Height", Height );
        Caption = SettingsFile->ReadString (Name, "Caption", Caption);

        // Load last window state
        if (SettingsFile->ReadBool(Name, "InitMax", WindowState == wsMaximized))
            WindowState = wsMaximized;
        else
            WindowState = wsNormal;
    }
    catch(Exception* e)
    {
    }

    delete SettingsFile;
}

TCustomIniFile* __fastcall TForm2::OpenIniFileInstance()
{
    TCustomIniFile* temp;
    switch (RadioGroup1->ItemIndex)
    {
        case 0: {
                /* Registry mode selected: in HKEY_CURRENT_USER\Software\... */
            temp = new TRegistryIniFile(String("Software\\") + Application->Title);
        }  
            break;
        case 1: {
                /* Ini file mode selected */
            temp = new TIniFile(ChangeFileExt(Application->ExeName, ".INI"));
        }
            break;
        case 2: {
                /* Memory based Ini file mode selected */
            temp = new TMemIniFile(ChangeFileExt(Application->ExeName, ".INI"));
        }
            break;
        default:
            break;
    }
    return temp;
}

Upvotes: 0

Views: 256

Answers (1)

geek225
geek225

Reputation: 157

Thanks everybody. I have find the solution to resolve this issue. I miss the header file #include<System.Win.Registry.hpp>

Best regards.

Upvotes: 1

Related Questions