Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 513

/ вопрос решён /

Доброго времени суток, уважаемые эксперты!
Проблема такая: есть флаг, который не хочет записываться в ini-файл. Выскакивает ошибка только на этом булевом флаге, а на остальных в том же методе все отрабатывает

(Подробнее в приложении к вопросу)

Не могу понять в чем дело. Может у Вас есть какие мысли на этот счет?

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. F_DrEquCheck: Boolean;
  2. Self.F_DrEquCheck = True
  3.  
  4.  
  5. {{code}}
  6. procedure TFlags.SaveFlags(IniFile: TExtendedIniFile; SectionName: string);
  7. begin
  8. try
  9. IniFile.WriteBool(SectionName, 'F_Process', Self.F_Process);
  10.  
  11. IniFile.WriteBool(SectionName, 'F_DrEquCheck', Self.F_DrEquCheck);
  12.  
  13. IniFile.UpdateFile();
  14. except
  15.  
  16. end;
  17. end;
  18. {{/code}}
  19.  
  20.  
  21. {{code}}
  22. IniFile.WriteBool(SectionName, 'F_DrEquCheck', Self.F_DrEquCheck);
  23. {{/code}}
  24.  


Aндрей Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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ндрей

Aндрей (статус: 1-ый класс), 20 июля 2011, 11:56 [#22]:

>Кстати, классу, может быть, требуется валидная ссылка на объект Encoding, а не nil.
вряд ли, в TMemIniFile два перегруженных конструктора, один из которых так и вызывает
min@y™

min@y™ (статус: Доктор наук), 20 июля 2011, 13:10 [#23]:

Цитата (Вадим К):

та же ошибка

Значит дело не в бобине, TMemIniFile тут не при делах. Где-то в другом месте у тебя косяк.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aндрей

Aндрей (статус: 1-ый класс), 20 июля 2011, 14:50 [#24]:

будем искать...
Aндрей

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ндрей

Aндрей (статус: 1-ый класс), 22 июля 2011, 16:10 [#27]:

да я знаю, что правильно писать
if Value
, но скобки ставлю уже на автомате, чтоб потом если какое условие добавлять их не ставить,
if (Value)
мне не нравится как выглядит)))
Вадим К

Вадим К (статус: Академик), 22 июля 2011, 16:22 [#28]:

тут не в скобках дело, а в лишнем сравнении с true
Галочка "подтверждения прочтения" - вселенское зло.
Aндрей

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™

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]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 22:27
Выполнено за 0.04 сек.