![]() |
$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. |
AW: $REGION funktioniert nicht bei [Attributen]
Zitat:
|
AW: $REGION funktioniert nicht bei [Attributen]
Die RS-1441 ist auch "Ready for validation" ... den kann ich sehen. :wink:
|
AW: $REGION funktioniert nicht bei [Attributen]
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: $REGION funktioniert nicht bei [Attributen]
Du musst by Shared With noch Embarcadero Customers hinzufügen (sollte eigentlich per Default schon so sein)
|
AW: $REGION funktioniert nicht bei [Attributen]
Zitat:
|
AW: $REGION funktioniert nicht bei [Attributen]
Zitat:
Normal besitzt diese Prozedur keine RTTI und daher wird dort "eigentlich" auch kein Attribut mit verlinkt. Aber unabhängig davon nutze ich auch an manchen Stellen ein Attribut als Dokumentation, manchmal sogar ein "Undeklariertes" :duck: Zitat:
OK, was dann am Ende der TMS-Compiler damit macht ... k.A. Für das Zuklappen ... da kommt es erstmal drauf an, welcher Parser verwendet wird und es kann gut sein, dass Dieser mit sowas einfach nicht klar kommt und abraucht. |
AW: $REGION funktioniert nicht bei [Attributen]
Das mit dem Compiler stimmt nicht ganz.
Die Entwicklung, mit alle Vorteilen von Delphi, läuft als Standard Win32 Compiler (ansichten, Automatiken). Also alles was sichtbar gemacht wird, wie Fehler, Hinweise, Autovervollständigung, läuft darüber. Erst wenn wirklich compiliert wird, wird nicht mehr Win32 genutzt, sondern der FreePascal pas2js Transpiler. (nicht TMS !) Das eine hat also mit dem andern erstmal nichts zu tun. Man entwicklet Win32 und compiliert pas2js. Hier geht es aber um den Editor, der eigentlich wenig(?) damit zu tun haben sollte. Weiß ich aber nicht genau. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 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