AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Warum geht das eigentlich nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum geht das eigentlich nicht?

Ein Thema von Mavarik · begonnen am 19. Jul 2014 · letzter Beitrag vom 20. Jul 2014
 
Dejan Vu
(Gast)

n/a Beiträge
 
#11

AW: Warum geht das eigentlich nicht?

  Alt 20. Jul 2014, 09:17
Interessanterweise geht sowas aber mit einem Record, wenn man beim read wieder ein Feld des Records anspricht. Und mit privat oder nicht hat das auch nichts zu tun.
Delphi-Quellcode:
..
public
  fFoo : Integer;
  Property Foo : Integer read fFoo;
end;
ist zwar syntaktisch korrekt aber behämmert. Die Variante
Delphi-Quellcode:
..
protected
  fFoo : Integer;
public
  Property Foo : Integer read fFoo;
end;
ist Kretinismus 2.Klasse und ein Design Flaw übelster Sorte. Insofern 'muss' es sich um ein privates Feld handeln. Allerdings ist die Erwähnung von 'private' meinerseits ein Automatismus und rein syntaktisch ist das nicht notwendig.

Bei deinem interessanten Beispiel bei einem Record meinst Du das hier?
Delphi-Quellcode:
Type
  TRec1 = Record
    Foo : Integer;
  End;
  TRec = Record
    Rec1 : TRec1;
    Property Foo : Integer Read Rec1.Foo;
  End;
Das geht mit einer Klasse nicht, weil der Getter direkt auf eine Adresse gemappt werden muss. Das sieht man an der Fehlermeldung des Compilers bei
Delphi-Quellcode:
Type
  TRec1 = class
    Foo : Integer;
  End;
  TRec = class
    Rec1 : TRec1;
    Property Foo : Integer Read Rec1.Foo;
  End;
Zitat von Compiler:
[Pascal Fehler] Unit16.pas(28): E2467 Record oder Objekttyp erforderlich
Ein Record geht also auch (=direktes Mapping)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz