Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.017 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#13

AW: Compiler Anweisung strict protected

  Alt 11. Feb 2015, 21:02
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (11. Feb 2015 um 21:13 Uhr)
  Mit Zitat antworten Zitat