Zitat von
negaH:
Ja, und welche dieser Deutigkeiten nun die Richtigere ist, das ist der Streitpunkt.
Ich bin der Meinung, daß die konsistentere die richtigere sei: Pointer haben dereferenziert zu werden. Alles andere ist kontextabhängig und in meinen Augen nur unnötig verwirrend.
Zitat:
Ah, also doch exakt meine Argumentation. Bei der Benutzung dieses neuen Types ist es dir wurscht was für ein Basistyp dahinterliegt.
Stimmt.
Delphi-Quellcode:
type
PBlah = ^TBlah;
TBlah = record
Member1: LongInt;
end;
type
PBlubb = ^TBlubb;
TBlubb = record
Member2: ShortInt;
end;
var
SomeBlubb: PBlubb;
SomeOtherBlubb: TBlubb;
begin
SomeOtherBlubb.Member2 := 5;
SomeBlubb := @SomeOtherBlubb;
PBlah(SomeBlubb)^.Member1 := 5;
end;
Habe ich jetzt einen LongInt oder einen ShortInt geschrieben? Du siehst, auch unter Delphi ist es mir wurscht, was für ein Typ dahintersteckt. Es gibt da keinen Unterschied zwischen C und Pascal, ich weiß also nicht, welche "Unsitte" du meinst, die in Delphi nicht solche Ausmaße hätte.
Zitat von
negaH:
Das IST Abstraktion. Einmalig definierst du diesen Typ damit der Compiler WEIS was er damit machen soll. Und im restlichen Source arbeitest DU auf diesen abstrakteren Typ, weil es für UNS den Source lesbarer macht.
Ich weiß, was Abstraktion ist. Deswegen kann ich doch trotzdem eindeutige Regeln befolgen und Pointer dereferenzieren, wie es sich gehört.