|
Вопрос # 5 513/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
Проблема такая: есть флаг, который не хочет записываться в ini-файл. Выскакивает ошибка только на этом булевом флаге, а на остальных в том же методе все отрабатывает
(Подробнее в приложении к вопросу)
Не могу понять в чем дело. Может у Вас есть какие мысли на этот счет?
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим- F_DrEquCheck: Boolean;
- Self.F_DrEquCheck = True
-
-
- {{code}}
- procedure TFlags.SaveFlags(IniFile: TExtendedIniFile; SectionName: string);
- begin
- try
- IniFile.WriteBool(SectionName, 'F_Process', Self.F_Process);
-
- IniFile.WriteBool(SectionName, 'F_DrEquCheck', Self.F_DrEquCheck);
-
- IniFile.UpdateFile();
- except
-
- end;
- end;
- {{/code}}
-
-
- {{code}}
- IniFile.WriteBool(SectionName, 'F_DrEquCheck', Self.F_DrEquCheck);
- {{/code}}
-
 |
Вопрос задал: Aндрей (статус: 1-ый класс)
Вопрос отправлен: 20 июля 2011, 10:17
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 31; последнее сообщение — 22 июля 2011, 23:17; участников в обсуждении: 3.
Страницы: [« Предыдущая] [1] [2]
|
Вадим К (статус: Академик), 20 июля 2011, 11:53 [#21]:
В отдельно сделанном приложении такая запись всегда удачна, а в Вашем - гарантированно дает ошибку?
А какой размер ini файла получается? вроде с TMemIni нет ограничения на 64кбайта, но вот с обычным TIniFiles - есть.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Aндрей (статус: 1-ый класс), 20 июля 2011, 11:56 [#22]:
>Кстати, классу, может быть, требуется валидная ссылка на объект Encoding, а не nil.
вряд ли, в TMemIniFile два перегруженных конструктора, один из которых так и вызывает
|
|
min@y™ (статус: Доктор наук), 20 июля 2011, 13:10 [#23]:
Цитата (Вадим К):
та же ошибка
Значит дело не в бобине, TMemIniFile тут не при делах. Где-то в другом месте у тебя косяк.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aндрей (статус: 1-ый класс), 20 июля 2011, 14:50 [#24]:
будем искать...
|
|
Aндрей (статус: 1-ый класс), 22 июля 2011, 16:02 [#25]:
Проблему решил так:
стандартный код
procedure TCustomIniFile.WriteBool(const Section, Ident: string; Value: Boolean);
const
Values: array[Boolean] of string = ('0', '1');
begin
WriteString(Section, Ident, Values[Value]);
end;
заменил своим:
procedure TExtendedIniFile.WriteBool(const Section, Ident: string; Value: Boolean);
begin
if (Value = True)
then WriteString(Section, Ident, '1')
else WriteString(Section, Ident, '0');
end;
вроде бы пашет, хотя толком не понимаю в чем разница, но работает!!
|
22 июля 2011, 16:02: Статус вопроса изменён на решённый (изменил автор вопроса — Aндрей)
|
Вадим К (статус: Академик), 22 июля 2011, 16:05 [#26]:
if (Value = True)
мда...
правильно писать так
if Value
а в целом интересно, теперь понятно, откуда возникала ошибка. Но вот как она туда проникла...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Aндрей (статус: 1-ый класс), 22 июля 2011, 16:10 [#27]:
да я знаю, что правильно писать if Value , но скобки ставлю уже на автомате, чтоб потом если какое условие добавлять их не ставить, if (Value) мне не нравится как выглядит)))
|
|
Вадим К (статус: Академик), 22 июля 2011, 16:22 [#28]:
тут не в скобках дело, а в лишнем сравнении с true
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Aндрей (статус: 1-ый класс), 22 июля 2011, 16:29 [#29]:
уже поправил
if (Value)
then WriteString(Section, Ident, '1')
else WriteString(Section, Ident, '0');
|
|
Вадим К (статус: Академик), 22 июля 2011, 17:00 [#30]:
можно ещё проще попробовать. где то так
WriteString(Section, Ident, integer(Value) and $01)
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 22 июля 2011, 23:17 [#31]:
Цитата (Вадим К):
можно ещё проще попробовать. где то так WriteString(Section, Ident, integer(Value) and $01)
Тогда уж так:
WriteString(Section, Ident, IntToStr(integer(Value) and $01));
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|