2012-01-25 1 views
7

Cette unité ne parvient pas à se compiler dans XE2 Update 3 avec l'erreur "Erreur interne: SY6315". Dans XE il n'y a pas un tel problème.Bogue étrange avec des méthodes anonymes dans la section 'initialisation'

unit Test; 

interface 

uses 
    SysUtils; 

var 
    Proc: TProc; 

implementation 

initialization 
    Proc := procedure 
    var ByteArr: array of Byte; 
    begin 
     SetLength(ByteArr, 10); 
    end; 

end. 

Est-ce que quelqu'un a déjà rencontré ce problème?

Mise à jour: J'ai soumis un rapport de CQ: QC#102888.

+5

erreurs internes ne doivent pas surface, vous devez signaler à http://qc.embarcadero.com. –

Répondre

8

On dirait un bug du compilateur, c'est une solution à l'aide TBytes

Proc := procedure 
    var 
    ByteArr: TBytes; 
    begin 
     SetLength(ByteArr, 10); 
    end; 
+3

+ 1, belle réponse hey comment avez-vous compris cela? expérience simple? – PresleyDias

+0

Avez-vous testé si l'utilisation d'un autre type déclaré pour 'array of byte' fonctionne aussi? Si oui, indique une erreur traitant les types in situ sur des méthodes anonymes. –