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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2010, 00:31   #1
kunio
Новичок
Джуниор
 
Регистрация: 23.04.2009
Сообщений: 1
Печаль PCRE в Delphi

Кодю на Delphi 7.
Понадобилось написать программу с использованием динамической библиотеки PCRE.
Покопавшись на сайте создателя нашел библиотеку и 2 модуля для работы с ней(архив прикрепил)

Сама библиотека написана в С, и большинство информации в Интернете по PCRE тоже идет с примерами в С.

Суть проблемы вот в чем.
Взяв за основу пример на С (http://ru.wikipedia.org/wiki/PCRE) решил попробовать переписать его в делфи.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, pcre, pcre_dll;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  re:tpcreh;
  a1:pchar;
  err:PChar;
  errof:Integer;
  //
  count: integer;
  txt:PChar;
  ove:pIntArray;
  ovecsize1:Cardinal;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  txt:='test';
  a1:='[es]';
  re:=pcre_compile(a1, 0 , err, errof, nil);
  count:=pcre_exec(re,nil, txt, 4,0,0,ove,30);
  memo1.Text:=inttostr(count);

end;

end.
Но после запуска если смотреть переменнаю count - она содержит код ошибки (-2).

Цитата:
Сообщение от http://dh.opennet.ru/pcre5.html#pcre_exec
Код:
int pcre_exec(const pcre *code, const pcre_extra *extra, const char *subject, 
    int length, int startoffset, int options, int *ovector, int ovecsize);
PCRE_ERROR_NULL (-2)
Один из указателей - code, subject, ovector - имеет значение NULL или ovecsize равно 0.
Count должен отображать кол-во совпадений.

Что в моем коде написано не так? и как правильно обращаться к функциям данной библиотки? очень прошу помочь!

PS: Лично сам грешу на ovector, но в чем проблема, и что сделать, чтоб все заработало, понятия не имею
Вложения
Тип файла: zip dpcre67_dll.zip (225.2 Кб, 12 просмотров)

Последний раз редактировалось kunio; 04.03.2010 в 00:45.
kunio вне форума Ответить с цитированием
Старый 04.03.2010, 09:53   #2
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Зачем изобретать велосипед? Всё уже есть!
http://www.regular-expressions.info/delphi.html
maxionans вне форума Ответить с цитированием
Старый 04.03.2010, 21:39   #3
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

Может так?
Код:
ove:array[1..30] of integer;
...
count:=pcre_exec(re,nil, txt, 4,0,0,@ove,30);

Последний раз редактировалось SnX; 04.03.2010 в 21:42.
SnX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Компиляция PCRE 8.01 под Windows Equilibrium Keeper Общие вопросы C/C++ 1 14.02.2010 22:06
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27