![]() |
|
|
#1
|
|||
|
|||
|
Не могу понять в чём дело. Должно со всего текста по регулярке добавлять результат в ListBox.
Выдаёт ошибку: TRegExpr(exec): No Input String Specified. Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RegExpr;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ListBox1: TListBox;
OpenDialog1: TOpenDialog;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
r: TStringList;
RegExp: TRegExpr;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i:= 1 to r.Count do
begin
RegExp:= TRegExpr.Create;
RegExp.Expression:= '"key":"(.*?)"';
if RegExp.Exec(i) then
begin
repeat
ListBox1.Items.Add(RegExp.Match[1]);
until not RegExp.ExecNext;
end;
end;
Button1.Caption:= 'Готово!';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
OpenDialog1.Filter:= 'Text file|*.txt';
OpenDialog1.InitialDir:= ExtractFilePath(Application.ExeName);
if OpenDialog1.Execute then
begin
r.LoadFromFile(OpenDialog1.FileName);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
r:= TStringList.Create;
end;
end. |
|
#2
|
||||
|
||||
|
Написано же: No Input String Specified. Текст ошибки-то для чего придумали?
|
|
#3
|
|||
|
|||
|
Разобрался.
Код:
for i:= 0 to r.Count - 1 do ... if RegExp.Exec(r.Strings[i]) then |