|
Вопрос # 3 492/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
при использовании функции представленной ниже в потоке при использовании критических секций вылетает ошибка. как решить проблему? зарание очень благодарен, т.к. я сутки пытался решить проблему и всё безуспешно :(
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим- function em_return(pattern,text:string):MatchCollection;
- var
- R: TRegExp;
- mc: MatchCollection;
- m: Match;
- sm: SubMatches;
- i, j: Integer;
- full_text:string;
- begin cs.Enter;
- R := TRegExp.Create(nil);
- try
- R.Pattern := pattern;
- R.IgnoreCase := True;
- R.Global := True;
- R.Multiline:=True;
- mc := R.Execute(text) as MatchCollection;
- Result:= mc;
- finally
- m := nil;
- sm := nil;
- mc := nil;
- R.Free;
- end;
- cs.Leave;
- end;
 |
Вопрос задал: mrMlex (статус: Посетитель)
Вопрос отправлен: 5 декабря 2009, 13:37
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 5 декабря 2009, 22:43; участников в обсуждении: 2.
|
Паровоз (статус: 10-ый класс), 5 декабря 2009, 22:43 [#2]:
"Нашёл решение"
Это хорошо, но что бросилось сразу в глаза - неправильное сочентание использования критической секции и обработки ошибок. Если в блоке try возникает исключение, то критическая секция не освобождается. Нужно cs.Leave также поместить на участок finally.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|