Множества и строки (что не так?)

Дана строка, состоящая из групп нулей и единиц. Каждая группа отделяется от другой одним или несколькими пробелами. Найти и вывести на экран группы с четным количеством символов.
unit Unit1;
interface

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

type
 TForm1 = class(TForm)
 Edit1: TEdit;
 Edit2: TEdit;
 Label1: TLabel;
 Label2: TLabel;
 procedure FormCreate(Sender: TObject);
 procedure Edit1KeyPress(Sender: TObject; var Key: Char);
 private
 { Private declarations }
 public
 { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
Function FWrd(st : string) : string;
 var n,i,nst: integer;
 sl,srez : string;
 begin
 Result:=''; srez:=''; n:=Length(st); 
 if n=0 then exit;
 st:=st+' '; n:=n+1; sl:='';
 for i:=1 to n do
 if st[i]<>' ' then sl:=sl+st[i]
 else
 if sl<>''and (length(sl) Mod 2)=0 then begin // <font color="Red">здесь ошибка? </font>
 srez:=srez+' '+sl+'; sl:='';
 end;
 Result:=srez;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear; Edit2.Clear;
end;

procedure TForm1.Edit1KeyPress( Sender: TObject; var Key: Char);
 begin
 if Key = #13 then Edit2.Text:=FWrd(Edit1.Text);
 end;
end.
2 ответа

А Делфи че пишет?
if sl<>''and (length(sl) Mod 2)=0 then
А если
if (sl<>'') and (length(sl) Mod 2)=0 then


Предлагаю так:
var i,c:byte;s:string;
begin
 s:=Edit1.Text+' ';
 i:=1; repeat // while (i<length(s))and(i<>0) do begin
 c:=pos(' ',s);
 if (c-1) mod 2=0 then begin
 caption:=caption+' '+copy(s,1,c);
 end else begin
 i:=c;
 end;
 delete(s,1,c);
 until c=0;