type
 TMaxSet = set of Byte;
 PMaxSet = ^TMaxSet;

function StrToSet(TypeInfo: PTypeInfo; const Value: string): TMaxSet;

という宣言を持ち

type
 TEle = (e00, e01, …(中略)… e38, e39);
 TRan = e01..e35;
 TSet = set of TRan;
var
 A: TSet;
begin
 PMaxSet(@A)^ := StrToSet(TypeInfo(TSet), 'e10 e20');

という使い方で動作する関数StrToSetを作ることができた、とだけ言っておきましょう…
なんか悔しいので中身は教えてあげない。

ヒント: メモリを破壊する心配は不要。レジスタに収まらない戻り値は、
呼びだし側が確保したバッファのアドレスが渡されるので、使う分だけ書き換えればOK。

( まあこんな事しなくても procedure StrToSet(…, out Result); でいいですけどね )