Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2018, 21:25   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию Не знаю где поставить «try»

Доброе время суток форумчане,
Есть процедура, которая заносит в переменную «LExcelData», данные с листа Excel.
Потом с помощью Repeat я читаю последовательно данные и пишу в БД.

Код:
LStartRow := 14;
  LNumRow := LStartRow;
Repeat
//при каждой строке проверять закончилась ли таблица, если закончилась, то выходить из цикла
    for LNumCol := 0 to LCols-1 do
    begin
      ….
    end;
    inc(LNumRow);
 
 Until //проверка на заполнение следующей строки
   (LExcelData[LNumRow+1, 2] = unassigned)
         and (LExcelData[LNumRow+1, 3] = unassigned);
и вот в строке
Код:
LExcelData[LNumRow+1, 2] = unassigned
У меня возникает исключение «EVariantBadIndexError». (..class EVariantBadIndexError with message 'Variant or safe array index out of bounds'.)

Мне нужно как-то в блок «Until» поставить блок «try…except»
Код:
except
   on E: Exception do break;
Заранее спасибо за подсказку.

Последний раз редактировалось KBO; 09.05.2018 в 21:29.
KBO вне форума Ответить с цитированием
Старый 09.05.2018, 21:39   #2
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

а все, придумал...
ввел дополнительную переменную, и перед Until, присваиваю ей значение
Код:
...
try
       s := LExcelData[LNumRow+1, 2];
       s := LExcelData[LNumRow+1, 3];
       except
       on E: Exception do break;
     end;
 Until (LExcelData[LNumRow+1, 2] = unassigned)
         and (LExcelData[LNumRow+1, 3] = unassigned);
...
вот не знаю на сколько это правильно?...

Последний раз редактировалось KBO; 09.05.2018 в 21:43.
KBO вне форума Ответить с цитированием
Старый 10.05.2018, 02:39   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от KBO Посмотреть сообщение
а все, придумал...
ввел дополнительную переменную, и перед Until, присваиваю ей значение
Код:
...
try
       s := LExcelData[LNumRow+1, 2];
       s := LExcelData[LNumRow+1, 3];
       except
       on E: Exception do break;
     end;
 Until (LExcelData[LNumRow+1, 2] = unassigned)
         and (LExcelData[LNumRow+1, 3] = unassigned);
...
вот не знаю на сколько это правильно?...
Имхо слишком мало информации о задаче. Точнее её нет от слова совсем.
А из общих соображений код
Код:
except
       on E: Exception do break;
это вредительство.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не знаю где спросить, объясните Silentium.noxe C# (си шарп) 11 02.10.2016 16:44
не знаю где ошибка! Аксана Помощь студентам 0 05.04.2011 19:46
Где поставить DoEvents VistaSV30 Microsoft Office Access 2 26.08.2010 13:25
Где взять и как поставить шкурку на XP Moly Windows 2 13.08.2010 02:12
Не знаю где ошибка 24nastya11 Помощь студентам 2 20.09.2009 20:43