Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.06.2017, 01:23
kenshi245 kenshi245 вне форума
Прохожий
 
Регистрация: 08.06.2017
Сообщения: 16
Версия Delphi: Delphi
Репутация: -625
По умолчанию Regexpr Acess Violation

Доброй ночи, есть скрипт, который при помощи регулярных выражений ищет буквы t в тексте 'test', но если поставить modifier i чтобы не реагировал на регистр, то при запуске будет выводить ошибку (не при компиляции, а уже в работе):

Код:
uses
Regexpr;

var
RegExp: TRegExpr;
s:string;

begin
    RegExp := TRegExpr.Create;

    //Если поставить true пишет ошибку!
    RegExp.ModifierI := true;
    
    RegExp.Expression := 't';
    s:='test';
    if RegExp.Exec(s) then
    begin
      repeat
        Print(RegExp.Match[0]);
      until not RegExp.ExecNext;
    end
    else Print('Не Найдено');
    RegExp.Free;
end.

Цитата:
Скрипт:t
Script Error: Module: "Tutorial1", Line: 19, Message: Access violation at address 00000000. Read of address 00000000
Ответить с цитированием
  #2  
Старый 09.06.2017, 06:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Я тебе уже отвечал, что там этот модифаер по другому указывается.
Вот пример:
Код:
uses System.RegularExpressions;

procedure TForm2.Button1Click(Sender: TObject);
var
  RE : TRegEx;
begin
  RE := TRegEx.Create('t',[roIgnoreCase]);
  ShowMessage(IntToStr(RE.Matches('test').Count));
  ShowMessage(IntToStr(RE.Matches('Test').Count));
end;
Показывает 2 раза "2".
Ответить с цитированием
  #3  
Старый 09.06.2017, 11:07
kenshi245 kenshi245 вне форума
Прохожий
 
Регистрация: 08.06.2017
Сообщения: 16
Версия Delphi: Delphi
Репутация: -625
По умолчанию

Цитата:
Сообщение от lmikle
Я тебе уже отвечал, что там этот модифаер по другому указывается.
Вот пример:
Код:
uses System.RegularExpressions;

procedure TForm2.Button1Click(Sender: TObject);
var
  RE : TRegEx;
begin
  RE := TRegEx.Create('t',[roIgnoreCase]);
  ShowMessage(IntToStr(RE.Matches('test').Count));
  ShowMessage(IntToStr(RE.Matches('Test').Count));
end;
Показывает 2 раза "2".

Все равно показывает ошибку
Цитата:
FindCoordsWithRegExp3 (9): Undeclared identifier "roIgnoreCase"

Я не могу использовать
Код:
uses System.RegularExpressions;

В моей версии доступно только
Код:
uses
Regexpr;
Ответить с цитированием
  #4  
Старый 09.06.2017, 17:48
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А доку почитать? Какая версия Дельфей?
То, что я написал - проверено на 10 Berlin, но в доке, вроде, написано, что это начиная с XE...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter