Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при редактировании файла вручную 
:(
    Опции темы
NieL
Дата 16.4.2008, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как обработать ошибку, в случае если в файл вносятся изменения вручную пользователем.


Код

procedure TNieL_Tree.LLastConf(FileName: String; Ctrl: Tanvil_TreeView);
var
  L: TIntegerList;
  F: TFileStream;
  Cur: TTreeItem;
  i: Integer;
begin
  if FileExists(FileName) then
  begin
    F := TFileStream.Create(FileName, fmOpenRead);
    try
      if F.Size > 0 then
      begin
        L := TIntegerList.Create;
        try
          L.Read(F); { В случае если значение файла не действительное вылетает ошибка }
          Cur := Ctrl.Items[0];
          repeat
            Cur := Cur.Next;
            for i := 0 to L.Count - 1 do
              if Cur.Tag = L[i] then
              begin
                Cur.CheckState := cbChecked;
                if Cur.CheckState <> Cur.Parent.CheckState then
                  ClickItem(Ctrl, Cur);
              end;
          until
            Cur = Ctrl.Items.GetLast;
        finally
          L.Free;
        end;
      end else
        DefaultItemChecked(
          Ctrl, cbChecked);
    finally
      F.Free;
    end;
  end else
    DefaultItemChecked(
      Ctrl, cbChecked); 
end;

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


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



что есть TIntegerList, и что делает его метод Read? и в конце концов, что за ошибка то "вылетает" и как далеко летит?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
NieL
Дата 16.4.2008, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



TIntegerList - аналог TStringList, но работае только с Integer-значениями.
Метод Read - Считывает значения Integer хранящиеся в Stream (в свою очередь получает значения из файла).
Так вот, возможна ситуация когда пользователь открое файл и введет туда недопустимы значения не относящиеся к целому типу. Следовательно при вызове метода Read появится ошибка о недопустимом значении. 
PM MAIL   Вверх
VICTAR
Дата 16.4.2008, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

try
except
end

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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