![]() |
$REGION funktioniert nicht bei [Attributen]
Hallo,
Hab nur ich das Problem oder liegt hier ein Bug vor Ich nutze gerne
Delphi-Quellcode:
Wenn ich aber innerhalb dieses Bereiches Attribute nutze, funktioniert es nicht mehr.
{$REGION 'Beschreibung'}
{$ENDREGION} Beispiel eines [async] Attributs vor einer Prozedur
Delphi-Quellcode:
In diesem Beispiel funktioniert die Region nicht wegen, wegen dem "[async]" Attribut. Lösche ich das, funktioniert wieder alles.
{$REGION 'Eine Funktion'}
function EineFunktion: String; var xy: Integer; [async] procedure Success; begin DoSomething; end; begin MachWas( TSuccessProc( @Success)); end; {$ENDREGION} Bug oder Problem mit meinem Delphi? VG Thomas |
AW: $REGION funktioniert nicht bei [Attributen]
Das Beispiel funktioniert hier unter Delphi 12.1, aber ich habe natürlich nur rudimentäre Deklarationen von asyncAttrribute, TSuccessProc, DoSomething und MachWas deklariert:
![]()
Delphi-Quellcode:
type
asyncAttribute = class(TCustomAttribute); TSuccessProc = procedure; procedure DoSomething; begin end; procedure MachWas(proc: TSuccessProc); begin end; {$REGION 'Eine Funktion'} function EineFunktion: String; var xy: Integer; [async] procedure Success; begin DoSomething; end; begin MachWas( TSuccessProc( @Success)); end; {$ENDREGION} |
AW: $REGION funktioniert nicht bei [Attributen]
Hallo Uwe,
erweiter mal bitte den Code um eine geschaltelte Region. Dann funktioniert es nicht mehr (nicht mehr korrekt) Hier als Beispiel:
Delphi-Quellcode:
type
asyncAttrribute = class(TCustomAttribute); TSuccessProc = procedure; procedure DoSomething; begin end; procedure MachWas(proc: TSuccessProc); begin end; {$REGION 'Alles'} {$REGION 'Eine Funktion'} function EineFunktion: String; var xy: Integer; [async] procedure Success; begin DoSomething; end; begin MachWas( TSuccessProc( @Success)); end; {$ENDREGION} procedure DoSomething2; begin end; procedure MachWas2(proc: TSuccessProc); begin end; {$ENDREGION} |
AW: $REGION funktioniert nicht bei [Attributen]
Delphi-Quellcode:
So scheint es bei mir zu gehen.
type
asyncAttrribute = class(TCustomAttribute); TSuccessProc = procedure; procedure DoSomething; begin end; procedure MachWas(proc: TSuccessProc); begin end; {$REGION 'Alles'} {$REGION 'Eine Funktion'} function EineFunktion: String; var xy: Integer; [async] procedure Success; begin DoSomething; end; begin MachWas( TSuccessProc( @Success)); end; {$ENDREGION 'Eine Funktion'} procedure DoSomething2; begin end; procedure MachWas2(proc: TSuccessProc); begin end; {$ENDREGION 'Alles'} |
AW: $REGION funktioniert nicht bei [Attributen]
Ich habe jetzt verschiede DInge ausprobiert.
Es muss nicht geschachtelt sein, es reicht wenn darunter noch weitere Regionen kommen. Auch wenn ich jede Region mit identischen Namen beschreibe, funktioniert es bei mir nicht. Ich muss erst das [async] löschen, dann geht alles. |
AW: $REGION funktioniert nicht bei [Attributen]
Mit der Wrapper-Region kann ich es nachvollziehen. Leg doch bitte einen Bugreport im
![]() |
AW: $REGION funktioniert nicht bei [Attributen]
Zitat:
Diese Embedded-Prozeduren haben unter Umständen einen "unsichtbaren" ersten Parameter, so ähnliche wie das "Self" bei Methoden, wo der Kontext zu den geteilten Variablen drin steht, was dann nicht mit der Signatur deines TSuccessProc übereinstimmt. Das sagt dir der Compiler aber auch, da er die Übergabe dieser Prozedur hier eigentlich nicht zulässt, wenn du nicht grob fahrlässig und bösartig, durch dein rumgepointere, die Prüfungen aushebeln würdest.
Delphi-Quellcode:
function EineFunktion: String;
var xy: Integer; procedure Success; begin Result := DoSomething(xy); // Zugriff auf XY und/oder Result end; begin ... |
AW: $REGION funktioniert nicht bei [Attributen]
|
AW: $REGION funktioniert nicht bei [Attributen]
Liste der Anhänge anzeigen (Anzahl: 1)
...ich habe keine Rechte und in meiner Liste ist aktuell der Letzte RSS-1441. :?
|
AW: $REGION funktioniert nicht bei [Attributen]
@himitsu
Das ganze ist in einer TMS Web Core Umbebung. Es wird anschließend nach javascript übersetzt. Daher ist auch das [async] vorhanden. Das Type-Casting ist nur, damit der Compiler nicht meckert. Die Adressierung geht nur so, damit es in javascript richtig funktioniert. (pas2js: ![]() Aber der ganze Code sollte eigentlich kleinen Einfluss auf des $REGION haben, nach meiner Meinung. Es ist jetzt nur unschön, aber natürlich nicht entscheidend für die Programmierung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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