![]() |
Unter Net kann der linken Seite oft nichts zugewiesen werden
Hallo,
ich habe hier ein kleines Codebeispiel. Das wird unter Win32 problemlos kompiliert (ist nicht vollständig, nicht ausführen):
Delphi-Quellcode:
Die zwei unteren Zeilen können allerdings nicht kompiliert werden, da der linken Seite angeblich nichts zugewiesen kann. Wieso ist das denn so?
program Project1;
{$APPTYPE CONSOLE} type TAufzaehlung = (aVal1, aVal2); TTestRec = record Aufzaehlung: TAufzaehlung; iVal: Integer; end; TTestClass = class public aRec: TTestRec; dVal: Double; end; TSuperClass = class private FTestClass: TTestClass; public property Testclass: TTestClass read FTestClass; end; var aSuperClass: TSuperClass; begin aSuperClass := TSuperClass.Create; aSuperClass.Testclass.dVal := 3.2; with aSuperClass.Testclass do begin aRec.iVal := 32; aRec.Aufzaehlung := aVal1; end; // Die zwei Zeilen können unter Net nicht // kompiliert werden: // Der linken Seite kann nichts zugewiesen werden aSuperClass.Testclass.aRec.iVal := 32; aSuperClass.Testclass.aRec.Aufzaehlung := aVal1; end. |
Re: Unter Net kann der linken Seite oft nichts zugewiesen we
Weil es sich dabei um einen ValueType (in Delphi: record) handelt. Und diese wie z.B. ein Integer behandelt werden. Somit kannst du einem ValueType nur einen ValueType zuweisen, aber nicht direkt den Feldern des ValueTypes.
|
Re: Unter Net kann der linken Seite oft nichts zugewiesen we
Hmm, das überzeugt mich eigentlich nicht. Das With zwei Zeilen drüber macht eigentlich genau das, was Du jetzt ausgeschlossen hast, oder irre ich mich da?
Ich habe noch mal weiter probiert. Wenn man die property, wo die Klasse zurückgegeben wird raushaut und durch die Variable ersetzt, kompiliert Delphi wieder. Aber verstanden warum, habe ich es damit leider immer noch nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 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