SelStart beginnt bei 0, aber Copy bei 1 (in
VCL/Windows),
also Length passt, wobei
Edit.SelStart := MaxInt;
auch gehn sollte.
PS:
StartsStr StartsText ContainsText ...
oder zumindestens
if Pos('shell>', Edit.Text) <> 1 then ...
Stringmanipulationen (kopieren/verändern/...) nur zum Prüfen ist immer bissl blöd.