![]() |
Re: Compilerfehler bei with do Anweisung?
Zitat:
Zitat:
|
Re: Compilerfehler bei with do Anweisung?
Wie gesagt, ich hab das Ganze schon mit einer anderen Variable, die lokal in der Funktion deklariert war, versucht. bInternalCanEdit an gleicher Stelle, 1 Zeile drunter, unter dem original CanEdit, mit dem gleichen Ergebnis. Es gibt definitiv keine andere Var die CanEdit heißt.
|
Re: Compilerfehler bei with do Anweisung?
Versuch mal Testweise den Ausdruck (ohne CanEdit) direkt im If zu evaluieren. Was passiert dann?
|
Re: Compilerfehler bei with do Anweisung?
Ist dir eigentlich klar worueber wir reden?
Wir vermuten das FDM.IBQ_Main sowohl eine Property CanEdit als auch Owner hat. Der with-Block erzeugt einen neuen Scope, in dem die Namen von FDM.IBQ_Main natuerlich Vorrang vor den Parametern von TfrmLieferscheinVerarbeite.setAuData als auch der Namen von frmLieferscheinVerarbeite haben. Es werden also vermutlich der Parameter CanEdit und die Property Owner von frmLieferscheinVerarbeite verdeckt. |
Re: Compilerfehler bei with do Anweisung?
Ich hatte sowas auch schonmal, und da wurde ein längerer If-Ausdruck, den ich zur Übersichtlichkeit in eine lokale Variable evaluiert habe, auch falsch ausgewertet. Als ich die Evaluation direkt in der If-Bedingungen eingesetzt habe gings seltsamerweise. Es könnte also tatsächlich ein Problem mit dem With-Block geben.
Wobei eine Überdeckung freilich nicht ausgeschlossen ist, aber nicht zwingend die einzige Möglichkeit für die Fehlerursache ist :) |
Re: Compilerfehler bei with do Anweisung?
Ich wuerde trotzdem auf TfrmWSLieferscheinDruck(Owner) tippen. Vom Namen her ist bestimmt Owner von frmLieferscheinVerarbeite, aber FDM.IBQ_Main hat bestimmt eine Owner-Property, die natuerlich Vorrang hat. Da TfrmWSLieferscheinDruck(Owner).LSMode vermutlich in den Wald greift, kommt mit hoher Wahrscheinlichkeit False fuer den Gesamtausdruck heraus.
Die beiden Massnahmen zur Korrektur sind den Parameter CanEdit zu ACanEdit umzunennen (plus alle Stellen wo derParameter gemeint ist) und TfrmWSLieferscheinDruck(Owner).LSMode in TfrmWSLieferscheinDruck(Self.Owner).LSMode zu aendern. |
Re: Compilerfehler bei with do Anweisung?
FDM.IBQ_Main hat keine Property CanEdit, aber Owner. Von daher natürlich! MUSS es das wohl sein.
Der Laufzeitauswerter berücksichtigt ja keine With-Blöcke, deswegen war auch die Überprüfung immer positiv. VIELEN DANK! |
Re: Compilerfehler bei with do Anweisung?
Mach mal (Self.Owner as TfrmWSLieferscheinDruck).LSMode und gewoehn dir das statt harter Umtypungen an. as ueberprueft die Abstammung von Onwer ob sie TfrmWSLieferscheinDruck ist. Damit waere der Fehler aufgefallen.
|
Re: Compilerfehler bei with do Anweisung?
Ja, kommt dann ein konkreter Fehler, dass die Klasse nicht passt oÄ?
Und noch mal danke. |
Re: Compilerfehler bei with do Anweisung?
Genau. Der as Operator klettert die RTTI-Informationen der klassen entlang und schmeisst eine Exception wenns nicht passt.
Das kostet natuerlich Performance, aber ist zumindest bei der Entwicklung sehr hilfreich. Eine harte Umtypung kann man spaeter ja immer noch reinmachen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:35 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