Page 1 of 1

Просто интересно как работает try except finally

Posted: 24.01.2013 16:57
by MAKAPEBu4
Что-то не додумался и не нашел как узнать длинну строки.
Попробовал конструкцию типа

Code: Select all

var
  charsArr: array[1..8] of char;
  i: integer;
  t: string;
begin
  t := '1234567';
  for i := 1 to 8 do
    try
      charsArr[i] := StrGet(t, i);
    except
      break;
    end;
  AddToSystemJournal(charsArr[1]);
  
end.
на что получил "Could not call proc at 0.220"

При чем меня огорчила работа try except. Работа скрипта обрывалась после того как срабатывало исключение(ошибка).
То что находится в except-end не отрабатывалось все что идет ниже по коду тоже.
Если except заменить на finally то блок между finally-end отрабатывается и опять же дальше скрипт глохнет.

Просто интересно, как работает данная вещь. Правильно ли оно работает? Так и должно обрываться в месте ошибки?

З.Ы. Я свою проблему решил случайно найдя функцию Length которую не смог найти нигде в справочниках...

Re: Просто интересно как работает try except finally

Posted: 24.01.2013 17:41
by Vizit0r
как ненашел?
первая же ссылка из гугля - http://www.delphibasics.ru/Length.php
Length - стандартная функция.

честно говоря, не пробовал работу try..except в скрипте, вечером проверю.

Впрочем, даже если не работает - не смогу починить, в том ПСе что-то серьезно исправить - нереально.

Re: Просто интересно как работает try except finally

Posted: 25.01.2013 13:58
by MAKAPEBu4
Хм... Как-то не был в курсе, что дельфийские функции/процедуры должны работать.
Я попробовал StringReplace AnsiReplaceStr, а в ответ получил Unknown identifier 'StringReplaces' ну и с AnsiReplaceStr соответствующее сообщение.
Использовал вот так:
StringReplace(url, ' ', '%20', [rfReplaceAll, rfIgnoreCase]);
Все тот же http
Что я сделал опять не так?

З.Ы. Перенесите тему, пожалуйста, в соответствующий раздел, а то я как-то промахнулся изначально (:

Re: Просто интересно как работает try except finally

Posted: 25.01.2013 14:28
by Vizit0r
все так.
только надо при этом вписать в uses sysutils;
непомню зачем я это сделал, вроде что-то там с чем-то серьезно конфликтовало.

чуть позже посмотрю, может уберу этот бред.


и это. Я могу в автокомплитлист добавить вообще функции Паскальскрипта, но тогда список будет БОЛЬШОЙ - пользоваться им будет банально неудобно.