Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
5 / 5 / 0
Регистрация: 21.12.2011
Сообщений: 157

Не могу создать ini файл

15.10.2012, 17:53. Показов 5930. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.Нашёл пример как создать ini файл тутhttp://devoid.com.ua/faq/cpp_b... older.htmlДелал всё как написанно.Выдаёт ошибку
C++
1
2
3
4
5
[C++Error]Uint1.ccp(24): E2451 Undefined simbol 'TInifile'
[C++Error]Uint1.ccp(24): E2451 Undefined simbol 'Ini'
[C++Error]Uint1.ccp(24): E2303 Tyre name expected
[C++Error]Uint1.ccp(24): E2379 Statement missing;
[C++Error]Uint1.ccp(26): E2158 Operand of 'delete' must be non-const pointer
.Помогите пожалуйста.
Вложения
Тип файла: rar 111.rar (11.0 Кб, 11 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.10.2012, 17:53
Ответы с готовыми решениями:

Не могу найти файл my.ini
Вопрос конечно немного глупый. Мне нужно подредактировать my.ini а я не могу найти куда у меня установился MysQL Подскажите в какую...

Создать INI файл
Проблема в том как создать INI файл в указанной папке? Т.е например моя прога находится в папке "Proga", и в этой папке надо...

Как создать ini файл?
Как создать ini файл в папке с моей программой(если можно с точными примерами)?

47
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
15.10.2012, 18:07
Вот код пробуй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <Inifiles.hpp>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Patch;
Patch = ExtractFilePath(ParamStr(0)) ; // ïîëó÷àåì ïóòü ê êàòàëîãó ïðîãðàììû
TIniFile *Ini = new TIniFile(Patch+"test.ini"); // ñîçäàåì ôàéë íàñòðîåê
Ini->WriteString("Forms","Form1",Form1->Caption); //çàïèñûâàåì òóäà Caption ôîðìû â êà÷åñòâå ïðèìåðà
delete Ini;
Ini = NULL;
}
//---------------------------------------------------------------------------
2
5 / 5 / 0
Регистрация: 21.12.2011
Сообщений: 157
15.10.2012, 21:22  [ТС]
Всё теперь работает.Опять выручил
0
5 / 5 / 0
Регистрация: 21.12.2011
Сообщений: 157
19.10.2012, 20:16  [ТС]
здравствуйте.опять проблемка у меня.создаётся ini файл.на при запуске программы выдаётся ошибка.подскажите что я сделал не так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <vcl.h>
 #include <Inifiles.hpp>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 AnsiString Patch;
Patch = ExtractFilePath(ParamStr(0)) ; // получаем путь к каталогу программы
TIniFile *Ini = new TIniFile(Patch+"test.ini");
   for(int i = 0; i < CheckListBox1->Items->Count; i++)
     Ini->WriteBool("items",CheckListBox1->Items->Strings[i],
             CheckListBox1->Checked[i]);
}
//---------------------------------------------------------------------------
   TIniFile *Ini ;
 
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
      for(int i = 0; i < CheckListBox1->Items->Count; i++)
    CheckListBox1->Checked[i] = Ini ->ReadBool(  //тут ошибкка
       "items",CheckListBox1->Items->Strings[i], false);
 
}
//---------------------------------------------------------------------------
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
19.10.2012, 21:16
Цитата Сообщение от iskatel73 Посмотреть сообщение
подскажите что я сделал не так
Не так то, что глобальную переменную Ini нужно объявить ДО ТОГО, как она впервые встретится. И не объявлять её повторно (вот так: TIniFile *Ini = new TIniFile ), а просто присвоить значение ( Ini = new TIniFile(Patch+"test.ini"); )
0
5 / 5 / 0
Регистрация: 21.12.2011
Сообщений: 157
19.10.2012, 21:31  [ТС]
ну как я понял тебя
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <vcl.h>
 #include <Inifiles.hpp>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    AnsiString Patch;
Patch = ExtractFilePath(ParamStr(0)) ; // получаем путь к каталогу программы
TIniFile *Ini = new TIniFile(Patch+"test.ini");
   for(int i = 0; i < CheckListBox1->Items->Count; i++)
     Ini->WriteBool("items",CheckListBox1->Items->Strings[i],
             CheckListBox1->Checked[i]);
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
      for(int i = 0; i < CheckListBox1->Items->Count; i++)
    CheckListBox1->Checked[i] = Ini ->ReadBool(
       "items",CheckListBox1->Items->Strings[i], false);
 
}
//---------------------------------------------------------------------------
опять ошибка[C++Error]Unit1.cpp(37):E2451 Undefintd symbol'lni'
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
19.10.2012, 22:23
Цитата Сообщение от iskatel73 Посмотреть сообщение
TIniFile *Ini = new TIniFile(Patch+"test.ini");
Это попробуй прописать сразу после этого:
C++
1
2
3
4
5
6
7
8
9
10
#include <vcl.h>
 #include <Inifiles.hpp>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TIniFile *Ini = new TIniFile(Patch+"test.ini");// както так...
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
19.10.2012, 22:51
вот так:__
C++
1
2
3
4
5
6
7
8
#pragma resource "*.dfm"
TForm1 *Form1;
   TIniFile *Ini ;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   AnsiString Patch;
- Path позже назначается...
1
5 / 5 / 0
Регистрация: 21.12.2011
Сообщений: 157
19.10.2012, 23:31  [ТС]
вот так что ли
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <vcl.h>
 #include <Inifiles.hpp>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TIniFile *Ini ;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
AnsiString Patch;
Patch = ExtractFilePath(ParamStr(0)) ; // получаем путь к каталогу программы
TIniFile *Ini = new TIniFile(Patch+"test.ini");
   for(int i = 0; i < CheckListBox1->Items->Count; i++)
     Ini->WriteBool("items",CheckListBox1->Items->Strings[i],
             CheckListBox1->Checked[i]);
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
      for(int i = 0; i < CheckListBox1->Items->Count; i++)
    CheckListBox1->Checked[i] = Ini ->ReadBool(
       "items",CheckListBox1->Items->Strings[i], false);
 
}
//---------------------------------------------------------------------------
так тоже ошибка
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
19.10.2012, 23:53
Ну так зачем объявлять 2 раза объект глобально и в конструкторе формы?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.10.2012, 00:00
Цитата Сообщение от iskatel73 Посмотреть сообщение
вот так что ли
Нет. При этом, Вам уже объяснили, что не так и как нужно.
Цитата Сообщение от iskatel73 Посмотреть сообщение
так тоже ошибка
Если у Вас в проекте тоже самое, то здесь возникнет совершенно другая ошибка и не на этапе компиляции, а во время работы приложения. Представьте, что Вы на приеме у доктора и там тоже изъясняетесь выражениями "болит" и "тоже болит".

Итак, вы объявляете переменную Ini:
Цитата Сообщение от iskatel73 Посмотреть сообщение
C++
1
TIniFile *Ini ;
А далее делаете это повторно:
Цитата Сообщение от iskatel73 Посмотреть сообщение
C++
1
TIniFile *Ini = new TIniFile(Patch+"test.ini");
Достаточно просто ее инициализировать:
Цитата Сообщение от nick42 Посмотреть сообщение
Не так то, что глобальную переменную Ini нужно объявить ДО ТОГО, как она впервые встретится. И не объявлять её повторно (вот так: TIniFile *Ini = new TIniFile ), а просто присвоить значение ( Ini = new TIniFile(Patch+"test.ini"); )
Мой Вам совет - заканчивайте гадать и копипастом подбирать. Разберитесь с основами, а потом уже переходите к ини-файлам и т.п.
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.10.2012, 00:05
вот этот код
C++
1
2
3
4
5
6
7
8
  AnsiString Patch;
  Patch = ExtractFilePath(ParamStr(0)) ; // получаем путь к каталогу программы
  Ini = new TIniFile(Patch+"test.ini");
   for(int i = 0; i < CheckListBox1->Items->Count; i++)
{
     Ini->WriteBool("items",CheckListBox1->Items->Strings[i],CheckListBox1->Checked[i]);
             
}
Надо вынести в событие OnShow
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.10.2012, 00:09
Цитата Сообщение от Sasha Посмотреть сообщение
Надо вынести в событие OnShow
Вынужден поправить. Нельзя выносить методы, в которых происходит выделение памяти (без вызова освобождения) в такие события как OnShow, т.к. они имеют свойство происходить неоднократно за время работы с окном. Это приведет к потере данных (старый адрес переменной будет заменен новым) и утечке памяти.
2
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.10.2012, 00:16
DefineTrueFalse, Да ты прав совсем забыл

Добавлено через 5 минут
Ну там в принципе можно будет записать так
C++
1
2
3
4
5
6
7
8
9
10
  AnsiString Patch;
  Patch = ExtractFilePath(ParamStr(0)) ; // получаем путь к каталогу программы
  TIniFile *Ini = new TIniFile(Patch+"test.ini");
   for(int i = 0; i < CheckListBox1->Items->Count; i++)
{
     Ini->WriteBool("items",CheckListBox1->Items->Strings[i],CheckListBox1->Checked[i]);
             
}
delete Ini;
Ini = NULL;
Тогда точно не будет выделяться лишняя память
1
5 / 5 / 0
Регистрация: 21.12.2011
Сообщений: 157
22.10.2012, 12:53  [ТС]
Спасибо всем за помощь.Теперь нет ошибок.Но при клике на кнопку снимается галочка
Вложения
Тип файла: rar 444.rar (351.3 Кб, 5 просмотров)
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.10.2012, 13:27
Цитата Сообщение от iskatel73 Посмотреть сообщение
Но при клике на кнопку снимается галочка
Это потомучто у тебя в ини файле везде стоят нули

Добавлено через 28 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <Inifiles.hpp>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
TIniFile *Ini; //=  new TIniFile(Patch+"test.ini");
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
  {
  AnsiString Patch;
  Patch = ExtractFilePath(ParamStr(0)) ; // ïîëó÷àåì ïóòü ê êàòàëîãó ïðîãðàììû
  Ini = new TIniFile(Patch+"test.ini");
  for(int i = 0; i < CheckListBox1->Items->Count; i++)
     {
      CheckListBox1->Checked[i] = Ini ->ReadBool("items",CheckListBox1->Items->Strings[i], false);
     }
}
 
 
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    for(int i = 0; i < CheckListBox1->Items->Count; i++)
   {
    Ini->WriteBool("items",CheckListBox1->Items->Strings[i],CheckListBox1->Checked[i]);
   }
 
   
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete Ini;
Ini = NULL;
}
//---------------------------------------------------------------------------
1
5 / 5 / 0
Регистрация: 21.12.2011
Сообщений: 157
23.10.2012, 13:24  [ТС]
огромное тебе саня спс
0
 Аватар для batmanrider
21 / 22 / 2
Регистрация: 20.09.2011
Сообщений: 196
Записей в блоге: 1
25.10.2012, 06:17
Цитата Сообщение от Sasha Посмотреть сообщение
DefineTrueFalse, Да ты прав совсем забыл

Добавлено через 5 минут
Ну там в принципе можно будет записать так
C++
1
2
3
4
5
6
7
8
9
10
  AnsiString Patch;
  Patch = ExtractFilePath(ParamStr(0)) ; // получаем путь к каталогу программы
  TIniFile *Ini = new TIniFile(Patch+"test.ini");
   for(int i = 0; i < CheckListBox1->Items->Count; i++)
{
     Ini->WriteBool("items",CheckListBox1->Items->Strings[i],CheckListBox1->Checked[i]);
             
}
delete Ini;
Ini = NULL;
Тогда точно не будет выделяться лишняя память
КАК БЭ есть событие onCreate.
0
5 / 5 / 0
Регистрация: 21.12.2011
Сообщений: 157
02.11.2012, 21:22  [ТС]
Привет всем.Появилась ошибка
C++
1
[Linker Warning] Public symbol '_Ini' defined in both module C:\USERS\СЕРГЕЙ\DESKTOP\КЛЕВАЛКА - КОПИЯ\UNIT1.OBJ and C:\USERS\СЕРГЕЙ\DESKTOP\КЛЕВАЛКА - КОПИЯ\UNIT2.OBJ
Проект работает.Но по моемому конфликт между двумя обьектами
0
 Аватар для Dr. Who
29 / 29 / 4
Регистрация: 28.08.2012
Сообщений: 154
02.11.2012, 22:26
Это он говорит, что Ini создается и в UNIT1, и в UNIT2.
попробуй написать во второй форме extern TIniFile *Ini;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.11.2012, 22:26
Помогаю со студенческими работами здесь

Как создать ini файл ?
Чего то не компилируется, не создается файл и запись в него. // работа с INI файлом #include &quot;stdafx.h&quot; ...

Как создать ini файл?
У меня просто элементарный вопрос для вас профессионалов:) Просто я только пытаюсь вникнуть в тему:) Суть вопроса: Есть программа,хочу...

Создать ini файл для каждого выбранного объекта и категории теста
Привет! Я делаю тест и возникла проблема . в Delphi с форме1 где поставил два Combobox и кнопку далее. в первым Combobox у меня объекты...

Внести коррективы в системный файл Win.ini, создать новый ключ с любым названием
Доброго времени суток. Можете помочь с кодом для WinAPI: Внести коррективы в системный файл Win.ini, в частности в секцию Compability...

Не могу создать файл
Пишу программу,которая создает некий txt файл в C://programs files. Но возникла проблема, программа не может создать этот файл и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru