从文本文件中读指定的字符串解决办法

从文本文件中读指定的字符串
文本文件2M左右,部分内容如下
4002133202233736}{W0009H070515224102033302234031}{W0009H070515224202033402334337}{W0009H070515224301933802134342}{W0009H070515224402034002134536}{W0009H07051522450213370233433e}{W0009H070515224602233802334341}{W0009H070515224702233902334343}{W0009H070515224802133902334545}{W0009H0705152249022336{W0009H070515225002233402434036}{W0009H07051522510223320243373b}
大括号内的内容是完整数据,如果不再大括号内就舍弃,怎么读取大括号里的内容到指定变量?我用READLN只能读一行,无法判断是否在大括号内。谢谢,急用


------解决方案--------------------
没做严格测试,供参考:

uses StrUtils;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
List: TStringList;
m, n, x: Integer;
s: string;
begin
List := TStringList.Create;
List.LoadFromFile( 'd:\1.txt ');
Memo1.Clear;
m := 1;
n := 1;
while (m <> 0) and (n <> 0) do
begin
m := PosEx( '{ ', List.Text, m);
if m = 0 then Break;
n := PosEx( '} ', List.Text, m);
if n <> 0 then
begin
s := Copy(List.Text, m + 1, n - m - 1);
x := Pos( '{ ', s);
if x <> 0 then // 不合法,去掉
begin
m := m + x;
continue;
end;
x := Pos(#13, s); // 如果中间有换行,删除换行符
if x <> 0 then
Delete(s, x, 2);
m := n + 1;
Memo1.Lines.Add(s); // 加到mode1,你可以保存到其它地方
end;
end;
List.Free;
end;