Netušil jsem, že s open array parametrem se nesmí manipulovat (alespoň tedy v případě managed typů jako třeba ten string). Ale skutečně const open array mi pomohlo, takže díky za radu! Var open array ztrácí tu příjemnou jednoduchost open array konstruktoru. Jedná se o vyhledávací funkci, kde v open array parametru dostanu masky souborů k vyhledání (např. ['*.pas', '*.txt']) a s tím souvisí i to, že potřebuji obsah manipulovat - aby se dalo provést case insensitive porovnání, což obvykle vyžaduje nějaké to LowerCase() nebo UpperCase(). No nic, pokud nejde manipulovat přímo obsah open array parametru, vyřeším to lokální kopií do standardního dynamického pole. Zvláštní ale je, že kompiler nijak neprotestuje, v helpu se o tomhle úskalí nepíše ani slovo, a navíc vyšší verze Delphi s tím nemají žádný problém. A vůbec, projev té chyby je velmi podivný, kdy v podstatě výjimku vyhodí kód (resp. přítomnost kódu), který se vůbec nevykonává (pole je prázdné a manipulace s jeho obsahem je v podmínce "if Length() > 0"). Opravdu tomu nerozumím.