![]() |
Re: wieder mal die Zeiger
Zitat:
@Kiar : Man darf natürlich das xP, wenn es schon mit new nur lokal erzeugt wird auch nicht als Wert-Parameter sondern als Var-Parameter übergeben. Da hat einer sich nicht so richtig an das Prinzip der Datenkapselung gehalten. :mrgreen: |
Re: wieder mal die Zeiger
Hmpf.. warum wird mein Beitrag wiedermal komplett ignoriert? :?
Ich hab doch ![]() |
Re: wieder mal die Zeiger
Zitat:
Bye |
Re: wieder mal die Zeiger
Aber er hat doch new verwendet. Das ist nicht der Fehler. Leider eben nur für eine lokale Variable. Woher soll denn eine andere Form wissen, was in dem lokalen Xp drinsteht ?
|
Re: wieder mal die Zeiger
hallo,
@Kedariodakon - nette Variante werde ich mir mal näher anschauen, also mache dich auf Fragen gefasst :mrgreen: @Manuel - habe ich doch nicht, habe doch es mit new() gemacht :gruebel: Das richtige, in meinem Fall ist der Tip von Hansa gewesen , aber halt, er hatte einen anderen Kenntnisstand :mrgreen: ich habe die aufrufende Procedure geändert, das konntet Ihr nicht wissen.
Delphi-Quellcode:
aufgrund der neueren Variante hatte Hansa den Vorschlag gemacht, die LoadSettings mir Var Parameter zu deklarieren. also so:
var
xP: Psettings; begin LoadSettings; // alte Variante Loadsettings(xP); // neue Variante
Delphi-Quellcode:
dies hat erstmal zum Erfolg geführt.
Loadsettigs(var xP: Psettings);
danke an alle Raik |
Re: wieder mal die Zeiger
Um es noch einmal ganz klar zu sagen: die Gültigkeitsbereiche sind schon wichtig. Und das hat mit Pointer usw. absolut nichts zu tun. Solche Fehler können im Prinzip überall auftreten. Wird eine Variable lokal, also so wie hier innerhalb einer Prozedur deklariert, dann gilt sie nur da. Wird die Prozedur aufgerufen, so bekommt das aufrufende Programm davon nichts mit. Das new innerhalb der Prozedur war also hier auch für die Katz.
Auch der jetzt verwendete VAR-Parameter ist nicht ganz ohne. Dann wird nämlich immer etwas an die aufrufende Stelle zurückgeliefert. Das geht hier ja jetzt anscheinend. Aber wehe, wenn innerhalb der Prozedur der VAR-Parameter keinen Wert zugewiesen bekommt. Dann ist der Effekkt der selbe und auch dann wird nur ein Zufallswert an das Programm zurückgeliefert. Deshalb sollten Var-Parameter immer zuerst initialisiert werden. Auch wenn man sich ganz sicher ist, daß sie auf jeden Fall irgendwo einen Wert erhalten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:38 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