Урок 30 Работа с ini файлами. Создание gamepad No title

February 20, 2007
в колонках играет OST NFS MW- I am Rock


 

Данная статья научит вас работе с ini файлами и stringgrid. В ini файл обычно сохраняется информация о настройках, но мы используем его для сохранения записанной в программу информации. Мы создадим небольшое приложение типа gamepad, это блокнот в который записываются достижения в играх.

 

Кидаем на форму два edit'a, один button, один stringgrid, один popupmenu и два label'a. Label1 подписываем, как "Название", размещаем слева возле edit1, label2 - "Жанр" размещаем слева возле edit2. button1, назовем "Добавить", а button2 - "Редактировать". Данные, которые будут заполнятся в блокнот будут хранится в ini файле. По этому в проект добавляем библиотеку #include < inifiles.hpp>.

Теперь создадим с помощью компонента popupmenu выпадающее меню с двумя пунктами, а именно "Удалить" и "Редактировать". Добавим в проект две общедоступные переменные типа int, c и r, их нужно добавить в public файла unit1.h нашего проекта.

 

__fastcall tform1::tform1(tcomponent* owner)

: tform(owner)

{

stringgrid1->cells[0][0]="Игра";

stringgrid1->cells[1][0]="Жанр"; //сдесь мы просто подписали название колонок

for (unsigned int z=0; z< stringgrid1->rowcount; z++)

{if(banlist1->cells[0][z+1]=="")

{

tinifile *ini;

ini = new tinifile(

changefileext( application->exename, ".ini" ) ); //считываем с файла данные

stringgrid1->cells[0][z+1]=ini->readstring ( "game", z+1, "" );

stringgrid1->cells[1][z+1]=ini->readstring ( "ganr", z+1, "" );

delete ini;

}}

}

 

Обработчик событий для кнопки "Добавить":

 

void __fastcall tform1::button1click(tobject *sender)

{

for (unsigned int z=0; z< stringgrid1->rowcount; z++)

{if(stringgrid1->cells[0][z+1]=="") //проверка на наличие свободной ячейки

{ //далее идет добавление записи в компонент stringgrid1

stringgrid1->cells[0][z+1]=edit1->text;

stringgrid1->cells[1][z+1]=edit2->text;

tinifile *ini;

ini = new tinifile(

changefileext( application->exename, ".ini" ) ); //записываем данные в файл

ini->writestring ( "game", z+1, banlist1->cells[0][z+1] );

ini->writestring ( "ganr", z+1, banlist1->cells[1][z+1] );

delete ini;

break;}}

edit1->clear();

edit2->clear();

}

 

Обработчик событий для пункта меню "Удалить":

 

void __fastcall tform1::n1click(tobject *sender)

{banlist1->cells[c][r]=""; //просто очищаем данные с ячеек

banlist1->cells[c+1][r]=""; //записываем изменения в файл

tinifile *ini;

ini = new tinifile(

changefileext( application->exename, ".ini" ) );

ini->writestring ( "game", r, banlist1->cells[c][r] );

ini->writestring ( "ganr", r, banlist1->cells[c+1][r] );

delete ini;

}

 

Обработчик событий для пункта меню "Редактировать":

 

void __fastcall tform1::n2click(tobject *sender)

{

edit1->text=banlist1->cells[c][r];

edit2->text=banlist1->cells[c+1][r];

}

 

Обработчик событий для кнопки "Редактировать", принцип таков же, как для добавления записи, просто здесь запись идет не в свободную ячейку, а в выбранную:

 

void __fastcall tform1::button2click(tobject *sender)

{

banlist1->cells[c][r]=edit1->text;

banlist1->cells[c+1][r]=edit2->text;

tinifile *ini;

ini = new tinifile(

changefileext( application->exename, ".ini" ) );

ini->writestring ( "game", r, banlist1->cells[c][r] );

ini->writestring ( "ganr", r, banlist1->cells[c+1][r] );

delete ini;

edit1->clear();

edit2->clear();

}

 

Вот вобщем то и всё.

 


Author of article - [ArtuR] 2007
www.builderhelper.3dn.ru
builder.helper@rambler.ru