No he entendido muy bien, pero supongo que el problema es que a veces te llegan 6 lineas (bandera + 5 lineas) y otras llegan menos.
Podrías obtener la cantidad de líneas de Memo1 y luego rellenar los Edits que sea posible:
Código Delphi
[-]
Memo1.Text:=Str;
Lineas := Memo1.RowCont;
if (Lineas >= 3) then
Edit1.Text:=Memo1.Lines.Strings[2];
if (Lineas >= 4) then
Edit2.Text:=Memo1.Lines.Strings[3];
if (Lineas >= 5) then
Edit3.Text:=Memo1.Lines.Strings[4];
if (Lineas >= 6) then
Edit4.Text:=Memo1.Lines.Strings[5];
otra opción, si no he entendido mal el tema del flag sería:
Código Delphi
[-]
Memo1.Text:=Str;
Flag := Memo1.[0];
if (Flag = 'a') then
Edit1.Text:=Memo1.Lines.Strings[2];
if (Flag = 'b') then
Edit2.Text:=Memo1.Lines.Strings[3];
if (Flag = 'c') then
Edit3.Text:=Memo1.Lines.Strings[4];
if (Flag = 'd') then
Edit4.Text:=Memo1.Lines.Strings[5];