Ich habe das wirklich auf Diktat codiert und musste feststellen, dass Delphi (XE7) sich hier anders verhält als erwartet.
Versucht bitte einfach einmal, mein unten beschriebenes Szenario nachzuvollziehen - es funktioniert (leider)
Dann diktier uns mal den Code bitte - das glaube ich dir nämlich nicht - nix für ungut.
Und wenn das so sein sollte, dann isses nen dicker Bock im Compiler.
Edit: Da, alles im grünen Bereich:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Unit1
in '
Unit1.pas',
Unit2
in '
Unit2.pas';
procedure Main;
var
bar: TBar;
begin
Writeln('
TFoo.InstanceSize = ', TFoo.InstanceSize);
// 12
Writeln('
TBar.InstanceSize = ', TBar.InstanceSize);
// 16
bar := TBar.Create;
bar.fMyVar := 42;
Writeln('
bar.fMyVar = ', bar.fMyVar);
// 42
Writeln('
bar.MyVar = ', bar.MyVar);
// 0
end;
begin
try
Main;
except
on E:
Exception do
Writeln(E.ClassName, '
: ', E.
Message);
end;
Readln;
end.
Delphi-Quellcode:
unit Unit1;
interface
type
TFoo =
class
private
fMyVar: Integer;
public
property MyVar: Integer
read fMyVar;
end;
implementation
end.
Delphi-Quellcode:
unit Unit2;
interface
uses
Unit1;
type
TBar =
class(TFoo)
public
fMyVar: Integer;
end;
implementation
end.