Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с ini файлом 
V
    Опции темы
Atilla360
  Дата 1.11.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 28.10.2009

Репутация: нет
Всего: нет



Подскажите в чем проблема? Записывю размер и положение формы на экране в ini-файл. Все впрынцыпи записывает, но записывает не те значения. Ну там лефт допустим 1231110 и тд.

Вот чтение (на форм криейт):

Код

TIniFile* ini;

int Top;
int Left;
int Width;
int Height;
 ini = new TIniFile(ExtractFilePath(Application->ExeName)+"set.ini");
 
 Top=ini->ReadInteger("SIZE","Top",Top);
 Left=ini->ReadInteger("SIZE","Left",Left);
 Width=ini->ReadInteger("SIZE","Width",Width);
 Height=ini->ReadInteger("SIZE","Height",Height);

 
delete ini; 
SetBounds(Left, Top, Width, Height);




а вот запись(на форм клозе)

Код

TIniFile* ini;
int Top;
int Left;
int Width;
int Height;


ini = new TIniFile(ExtractFilePath(Application->ExeName)+"set.ini");


ini -> WriteInteger("SIZE","Top",Top);
ini -> WriteInteger("SIZE","Left",Left);
ini -> WriteInteger("SIZE","Width",Width);
ini -> WriteInteger("SIZE","Height",Height);

delete ini;


PM MAIL   Вверх
Данкинг
Дата 1.11.2009, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



А что за Top? Указывай конкретно: Form1->Top. smile 

Цитата(Atilla360 @  1.11.2009,  17:33 Найти цитируемый пост)
Вот чтение (на форм криейт):

Я бы это на Activate повесил.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ImSave
Дата 1.11.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 4.9.2009

Репутация: нет
Всего: нет



Цитата(Данкинг @ 1.11.2009,  18:14)
Я бы это на Activate повесил.

зачем? чтобы потом противное мелькание наблюдать?

Код

TIniFile* ini; //глобальная

чтение (OnCreate):
Код

 ini = new TIniFile(ExtractFilePath(Application->ExeName)+"set.ini");
 
 Form1->Top = ini->ReadInteger("SIZE", "Top", Form1->Top);
 Form1->Left = ini->ReadInteger("SIZE", "Left", Form1->Left);
 Form1->Width = ini->ReadInteger("SIZE", "Width", Form1->Width);
 Form1->Height = ini->ReadInteger("SIZE", "Height", Form1->Height);

delete ini; 

запись (OnClose\CloseQuery):
Код

ini = new TIniFile(ExtractFilePath(Application->ExeName)+"set.ini");

  ini -> WriteInteger("SIZE", "Top", Form1->Top);
  ini -> WriteInteger("SIZE", "Left", Form1->Left);
  ini -> WriteInteger("SIZE", "Width", Form1->Width);
  ini -> WriteInteger("SIZE", "Height", Form1->Height);

delete ini;


Это сообщение отредактировал(а) ImSave - 1.11.2009, 19:57
PM MAIL   Вверх
Данкинг
Дата 1.11.2009, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(ImSave @  1.11.2009,  19:48 Найти цитируемый пост)
зачем? чтобы потом противное мелькание наблюдать?

Ладно, убедил. smile Просто я почему-то не очень люблю OnCreate.




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
mrbrooks
Дата 2.11.2009, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Данкинг @  1.11.2009,  20:15 Найти цитируемый пост)
Просто я почему-то не очень люблю OnCreate.

И правильно делаешь. OnCreate - это наследие порочного дельфяцкого VCL.  Подробней об этом пишут разработчики в хелпе. В С++ используется конструктор/деструктор.
PM MAIL   Вверх
Alca
Дата 2.11.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

В С++ используется конструктор/деструктор.

У меня так и работает.

Добавлено @ 10:40
Цитата

А что за Top? Указывай конкретно: Form1->Top.

Смысл?

Добавлено @ 10:40
Код

ini -> WriteInteger("SIZE", "Top", StrToInt(Top));



Это сообщение отредактировал(а) Alca - 2.11.2009, 10:42


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alexeis
Дата 2.11.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



Цитата(mrbrooks @  2.11.2009,  07:31 Найти цитируемый пост)
И правильно делаешь. OnCreate - это наследие порочного дельфяцкого VCL.  Подробней об этом пишут разработчики в хелпе. В С++ используется конструктор/деструктор. 

  Не согласен. В делфи тоже есть конструктор, но суть не в том, просто есть разные этапы инициализации формы. В конструкторе еще недоступны виртуальные методы и не созданы дочерние объекты, в OnCreate есть и то и другое, но нельзя управлять видимостью формы, в OnShow уже можно делать все. Каждое служит для своего.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
mrbrooks
Дата 2.11.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Alexeis @  2.11.2009,  11:17 Найти цитируемый пост)
Не согласен.

Не согласен с чем? С разработчиками?  smile  
Дык у них в документации к Билдеру это написано. К 6-й версии 100%. 
PM MAIL   Вверх
Alexeis
Дата 2.11.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



Хотя да
Цитата

Use OnCreate to perform special processing when the form is created and is invoked by TCustomForm's constructor. Either implement this event or override the constructor of the form; do not do both. Any objects created in the OnCreate event should be freed by the OnDestroy event

  Получается что OnCreate также вызывается в конструкторе предка. Если перекрыть и то и другое, то жди косяков.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.