AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE $REGION funktioniert nicht bei [Attributen]
Thema durchsuchen
Ansicht
Themen-Optionen

$REGION funktioniert nicht bei [Attributen]

Ein Thema von t2000 · begonnen am 25. Jul 2024 · letzter Beitrag vom 25. Jul 2024
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
236 Beiträge
 
Delphi 12 Athens
 
#1

$REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 10:09
Hallo,

Hab nur ich das Problem oder liegt hier ein Bug vor

Ich nutze gerne
Delphi-Quellcode:
{$REGION 'Beschreibung'}
{$ENDREGION}
Wenn ich aber innerhalb dieses Bereiches Attribute nutze, funktioniert es nicht mehr.
Beispiel eines [async] Attributs vor einer Prozedur
Delphi-Quellcode:
{$REGION 'Eine Funktion'}
function EineFunktion: String;
var
  xy: Integer;

  [async] procedure Success;
  begin
    DoSomething;
  end;

begin
  MachWas( TSuccessProc( @Success));
end;
{$ENDREGION}
In diesem Beispiel funktioniert die Region nicht wegen, wegen dem "[async]" Attribut. Lösche ich das, funktioniert wieder alles.

Bug oder Problem mit meinem Delphi?

VG
Thomas
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!

Geändert von t2000 (25. Jul 2024 um 10:19 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: $REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 11:07
Das Beispiel funktioniert hier unter Delphi 12.1, aber ich habe natürlich nur rudimentäre Deklarationen von asyncAttrribute, TSuccessProc, DoSomething und MachWas deklariert: https://app.screencast.com/TtTpVgb70ByY5
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}
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
236 Beiträge
 
Delphi 12 Athens
 
#3

AW: $REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 11:11
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}
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

AW: $REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 11:41
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 'Eine Funktion'}

procedure DoSomething2;
begin

end;

procedure MachWas2(proc: TSuccessProc);
begin

end;
{$ENDREGION 'Alles'}
So scheint es bei mir zu gehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
236 Beiträge
 
Delphi 12 Athens
 
#5

AW: $REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 12:10
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.
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: $REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 12:23
Mit der Wrapper-Region kann ich es nachvollziehen. Leg doch bitte einen Bugreport im neuen Portal an.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: $REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 12:35
Zitat:
MachWas( TSuccessProc( @Success));
Und das Funktioniert so?

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
  ...
$2B or not $2B

Geändert von himitsu (25. Jul 2024 um 12:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
236 Beiträge
 
Delphi 12 Athens
 
#8

AW: $REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 12:46
Eingetragen:
https://embt.atlassian.net/servicede...tal/1/RSS-1442
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#9

AW: $REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 12:52
...ich habe keine Rechte und in meiner Liste ist aktuell der Letzte RSS-1441.
Miniaturansicht angehängter Grafiken
error.png  
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
236 Beiträge
 
Delphi 12 Athens
 
#10

AW: $REGION funktioniert nicht bei [Attributen]

  Alt 25. Jul 2024, 12:54
@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: https://wiki.freepascal.org/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.
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz