![]() |
"Der linken Seite kann nichts zugwiesen werden."
Schönen guten Nachmittag,
ich wollte mich mal ein wenig mit Grafik und Andorra 2D beschäftigen. Um mal einen allgemeinen Einblick zu erhalten, wollte ich erstmal die Beispielprojekte durchgehen, aber leider scheitert es da beim Compilieren. Soweit sind alle benötigten Units vorhanden (davon gehe ich zumindestens aus). Bei folgendem Punkt erscheint die Fehlermeldung (siehe Topic-Name) (ich habe die Bounce-Demo grade gehabt, ist aber auch bei anderen der Demos so)
Delphi-Quellcode:
Die Fehlermeldung besagt ja eigentlich, dass die linke Seite überhaupt gar nicht dafür gedacht ist, ihr etwas zuzuweisen, wie etwa
with FDraw.Display do
DisplayMode := dmWindowed;
Delphi-Quellcode:
.
(9 div 10) := b;
Nur verstehe ich nicht, warum er jetzt meckert, es sind ja nicht meine Codezeilen und eigentlich laufen sie (sonst würde es ja die Demo nicht als .exe geben) ?! Der Fehler tritt in der AdSetupDlg auf ... Ich nutze im Moment Delphi 2010 Pro, welches ich grade noch mal auf den neusten Stand gepatcht habe. Mit einem anderen Delphi kann ich es grade nicht testen, weil ich zur Zeit keinen Zugriff auf meinen Desktop-PC habe. Wäre schön, wenn mir jemand weiterhelfen könnte. MfG Webo Edit: ![]() |
Re: "Der linken Seite kann nichts zugwiesen werden.&
Unter D2010 kann man den Feldern eines Record-Properties nichts mehr zuweisen. Man muss dazu eine temporäre Record-Variable bemühen.
|
Re: "Der linken Seite kann nichts zugwiesen werden.&
Könntest du mir dazu vllt ein kleines Beispiel geben, wie du das meinst ?
|
Re: "Der linken Seite kann nichts zugwiesen werden.&
Ich schätze, das müsste nach Uwe so sein, mein Source ist absolut ungetestet:
Delphi-Quellcode:
HTH
var
TempDisplay: TAdDisplay; // kA ob der Name des Typs so TAdDisplay ist und ob es wirklich ein Record ist begin TempDisplay := FDraw.Display; TempDisplay.DisplayMode := dmWindowed; // alles andere setzen FDraw.Display := TempDisplay; end; |
Re: "Der linken Seite kann nichts zugwiesen werden.&
Würde überlegen ob du nicht ggf. besser eine Klasse benutzt.
Und noch eine Anmerkung: Das ist nicht erst seit Delphi2010 so. Das war schon immer so ;) |
Re: "Der linken Seite kann nichts zugwiesen werden.&
das ganze ist nicht erst seit Delphi6 so. Auch im BDS2006 war das schon so und ich meine mich erinnern zu können das es auch unter Delphi7 bereits so war.
[Edit] Ich würde sogar behaupten das es in allen zukünftigen Versionen so sein wird da es gar keine andere Vernünftige Variante gibt sobald eine Get- und Set-Methode für das Property existiert. Denn wenn man Object.RecordProperty.Value setzt wird ja indirekt folgendes aufgerufen
Delphi-Quellcode:
Und das macht einfach keinen Sinn weil der neu gesetzte Wert nicht verwendet werden würde.
Object.GetRecordProperty().value = neue Wert
|
Re: "Der linken Seite kann nichts zugwiesen werden.&
Mmh, jetzt habe auch ich verstanden, was grade gemeint war ...
Nur versteh ich nich, warum man erst wieder den Umweg über was temporäres machen muss, wenn man es doch auch direkt machen könnte (?) @ wicht : Funktioniert leider nicht ganz so, wie es soll, zum Schluss bei
Delphi-Quellcode:
kommt :
FDraw.Display := TempDisplay;
Zitat:
|
Re: "Der linken Seite kann nichts zugwiesen werden.&
für .Display gibt es wohl einfach keinen Setter und somit geht es nicht, da es eben nur ein READONLY-Property ist.
|
Re: "Der linken Seite kann nichts zugwiesen werden.&
Und, kann man da jetzt irgendwas machen, um das so ans Laufen zu bringen (außer den entsprechenden Teil auszuklammern, denn dann funktioniert es, man kann halt nur nich mehr einstellen, wie sich das Fenster verhalten soll) ?
|
Re: "Der linken Seite kann nichts zugwiesen werden.&
Ja, indem man diesem Property innerhalb der Klasse oder einem Nachfahren einen Setter verpaßt.
Code:
property DisplayMode ... [b]write ...[/b];
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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