Jenerik kullanırken derleyici hata ve ileri Delphi XE2 beyanname
Delphi 2010, TEKNOLOJİ için daha sonra geçirilmiş bir proje başladım ve XE2 göç etmeye çalışıyorum şimdi. XE2 içinde derleme sonra (Update 4 Düzeltme 1), birim testleri AV başarısız başladı. Bazı hata ayıklama sonra, aşağıdaki kodu düzgün derlenmiş değil belli oldu:
program ForwardDeclaration;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
type
TEntityBase = class(TObject)
protected
FModel: Integer;
public
constructor Create(const AModel: Integer);
end;
TEntity<TKey> = class(TEntityBase)
end;
TMyEntity2 = class;
TMyEntity1 = class(TEntity<Integer>)
FData: Integer;
end;
TMyEntity2 = class(TMyEntity1)
end;
constructor TEntityBase.Create(const AModel: Integer);
begin
inherited Create;
FModel := AModel;
end;
var
MyEntity: TMyEntity1;
begin
try
Writeln(TEntityBase.ClassName, ': ', TEntityBase.InstanceSize, ' bytes');
Writeln(TMyEntity1.ClassName, ': ', TMyEntity1.InstanceSize, ' bytes');
MyEntity := TMyEntity1.Create(100);
Assert(MyEntity.FData = 0);
except
on E: Exception do Writeln(E.ClassName, ': ', E.Message);
end;
end.
Program çıktıları:
TEntityBase: 12 bytes
TMyEntity1: 12 bytes <-- Must be 16 bytes!
EAssertionFailed: Assertion failure (ForwardDeclaration.dpr, line 41)
Derleyici seçenekleri ayarlama sorunu çözmek mümkün mü?
Bu sorun, başka biri de tekrarlar mı?
S. S. QC107110
CEVAP
Derleyici seçenekleri ayarlama sorunu çözmek mümkün mü?
Hayırolamaz ayarlama hata düzeltme, bir çok özel derleyici hata.
Bu sorun, başka biri de tekrarlar mı? biri bana söyleyebilir []
Kodu yeniden yapabilirsiniz, ama sadece XE2 update 4.
XE3 bunu kontrol etmek mümkün (Bu sürüm yok) değil. XE4 (yorum) başı olarak düzeltildi.
İş kodu için tek yol vardır:
bir. gereksiz ileri bildirimi kaldırın.
b. Delphi farklı bir sürümünü kullanın.
Nasıl yerel değişken bilgi (adres ve t...
PGError: HATA: ilişki için erişim izni...
Nasıl düzeltmek için: "uygun bir ...
Nasıl çözüleceği "Hata: kötü Ende...
İyileştirme etkinleştirilmiş farklı ka...