![]() |
Ich kann meinen eigenen Helper nicht benutzen
Ich stehe auf dem Schlauch. Folgender Code funktioniert nicht, ich kann meine Helper-Methode
Delphi-Quellcode:
nicht aufrufen:
IWantThis()
Delphi-Quellcode:
Die beiden anderen Units:
program RecordHelper;
{$APPTYPE CONSOLE} {$R *.res} uses EnumUnit in 'EnumUnit.pas', WrapperUnit in 'WrapperUnit.pas'; type TSomeEnumHelper = record helper for TSomeEnum procedure IWantThis(); end; procedure TSomeEnumHelper.IWantThis(); begin // end; var wrapper: TSomeWrapper; begin wrapper.enum.IDontWantThis(); wrapper.enum.IWantThis(); // <-- E2003 end.
Delphi-Quellcode:
unit EnumUnit;
interface type TSomeEnum = (yes, no); TSomeEnumHelper = record helper for TSomeEnum procedure IDontWantThis(); end; implementation { TSomeEnumHelper } procedure TSomeEnumHelper.IDontWantThis(); begin // end; end.
Delphi-Quellcode:
unit WrapperUnit;
interface uses EnumUnit; type TSomeWrapper = record enum: TSomeEnum; end; implementation end. Warum ist das so? Mir leuchtet ein dass es vielleicht auch nicht die tollste Idee ist, den Enum-Typen sowie den Helper in der selben Unit zu deklarieren. Trotzdem- Sollte das wirklich so sein? Ein Workaround wäre so etwas in der Richtung, dann geht es komischerweise:
Delphi-Quellcode:
var
wrapper: TSomeWrapper; theEnum: TSomeEnum; begin wrapper.enum.IDontWantThis(); //wrapper.enum.IWantThis(); // <-- E2003 theEnum := wrapper.enum; theEnum.IWantThis(); // works end. |
AW: Ich kann meinen eigenen Helper nicht benutzen
Weil der Helper nicht in einer
Delphi-Quellcode:
liegt.
unit
Delphi-Quellcode:
ist keine
program
Delphi-Quellcode:
.
unit
:stupid: |
AW: Ich kann meinen eigenen Helper nicht benutzen
Nee, macht keinen Unterschied wenn es eine UNIT ist. War nur zu Verkürzungszwecken in die DPR gepackt ;-)
|
AW: Ich kann meinen eigenen Helper nicht benutzen
Bitte im ganzen Satz (mit dem gesamten Code).
Du weißt, dass immer nur ein Helper pro Typ aktiv sein kann? |
AW: Ich kann meinen eigenen Helper nicht benutzen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich fand den Satz jetzt nicht allzu schwer :|
Anbei gerne auch noch einmal als ZIP-Datei. Ohne Code in der DPR. Mir ist klar dass immer nur ein Helper aktiv sein kann. Mir ist hingegen nicht klar, weshalb der Helper aus einer anderen Datei Vorrang vor dem Helper in der eigenen Unit haben sollte. |
AW: Ich kann meinen eigenen Helper nicht benutzen
Ahhh, jetzt habe ich es auch gesehen :stupid:
Das ist aber wohl kein Bug, sondern ehar als Feature gedacht ;) (oder es hat wieder keiner weiter gedacht ... es kompiliert, dann reicht es ja) Der Helper wird augenscheinlich beim Kompilieren mit in die Klasse/den Record verwoben, so dass dieser dann an egal welcher Stelle beim Verwenden der Struktur zur Verfügung steht, egal was für Helper da noch definiert sein sollten. Hätte ich so auch nicht erwartet ... aber die Helper (grundsätzlich sehr hilfreich) sind ja eh etwas seltsam implementiert (es kann nur einen geben, nicht für Generics, ...) |
AW: Ich kann meinen eigenen Helper nicht benutzen
Zitat:
|
AW: Ich kann meinen eigenen Helper nicht benutzen
Zitat:
Bei der Erstellung von Helpern kann man natürlich auch Fehler machen, was aber nicht an der Funktionalität Helper liegt :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 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 by Thomas Breitkreuz