AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rätselhaftes Konstrukt in Unit Dialogs

Ein Thema von idefix2 · begonnen am 29. Jan 2012 · letzter Beitrag vom 31. Jan 2012
Antwort Antwort
Seite 1 von 3  1 23      
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Rätselhaftes Konstrukt in Unit Dialogs

  Alt 29. Jan 2012, 23:09
Hallo, auf der Suche nach einer etwas flexibleren Routine als ShowMessage und MessageDlg bin ich zwar im Quelltext der Unit Dialogs fündig geworden, da gibt es z.B. messageDlgPos, bei dem man die Position des Dialogs am Bildschirm festlegen kann, und überladene Routinen, denen man noch den Titel der Messagebox mitgeben kann - ich bin aber dabei über ein Delphi konstrukt gestolpert, das ich noch nie gesehen habe, und würde gerne wissen, was das eigentlich ist:

Delphi-Quellcode:
[UIPermission(SecurityAction.LinkDemand, Window=UIPermissionWindow.SafeSubWindows)]
function MessageDlgPos(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer): Integer;
begin
  Result := MessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, X, Y, '');
end;

[UIPermission(SecurityAction.LinkDemand, Window=UIPermissionWindow.SafeSubWindows)]
function MessageDlgPos(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
  DefaultButton: TMsgDlgBtn): Integer; overload;
begin
  Result := MessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, X, Y, '', DefaultButton);
end;
Was bedeutet jeweils die Zeile vor der Funktionsdeklaration mit den eckigen Klammern?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Rätselhaftes Konstrukt in Unit Dialogs

  Alt 29. Jan 2012, 23:26
Was das ist, kann ich dir auch nicht sagen. Würde mich aber auch interessieren. Aber hast du schon mal an die Windows API Funktion Messagebox gedacht oder den VLC Wrapper als Methode von TApplication: Applicatiuon.Messagebox? Bzw. was sollte der Dialog denn können?
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (29. Jan 2012 um 23:28 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: Rätselhaftes Konstrukt in Unit Dialogs

  Alt 29. Jan 2012, 23:43
Eigentlich genügt mir das, was ich in der Unit Dialogs gefunden habe: Die Messagebox beliebig am Bildschirm positionieren und ihr einen Titel verpassen - Diesbezüglich bin ich ganz glücklich.

Aber ich habe noch nie in einem Delphi-Programm eine Zeile gesehen, die so in eckigen Klammern herumschwirrt, und hätte gerne gewusst, was das soll - einfach nur interesse halber.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Rätselhaftes Konstrukt in Unit Dialogs

  Alt 29. Jan 2012, 23:49
Meinst du UIPermission? Dürfte sich um Überbleibsel der gescheiterten VCL.NET-Implementierung handeln. Damit teilst du mit welche Rechte die Methode/Funktion benötigt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: Rätselhaftes Konstrukt in Unit Dialogs

  Alt 29. Jan 2012, 23:53
das ist schon einmal eine interessante information - aber die Syntax ist mir trotzdem rätselhaft: nach allem was ich bis jetzt an Delphi Syntax kenne müsste der Compiler doch bei den eckigen Klammern streiken???
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Rätselhaftes Konstrukt in Unit Dialogs

  Alt 29. Jan 2012, 23:56
Das sind "Attribute".

Such einfach mal in der Unit RTTI nach "Attribute" oder schau dich beim DataSnap um (aktuelles Beispiel in der Nutzung)
Auch wenn ich dieses vollkommen krank finde, denn wer sollte schon auf die blöde Idee kommen Gruppen und Passwörter Hardgecodes im Queltext anzulegen, wo doch alle mehr mit dynamischen Strukturen arbeitet, wie z.B. Datenbanken. Oder kommt das wirklich so cool, wenn man die Anwendung neu kompilieren soll, nur um eine neue Rolle anzulegen oder ein Passwort zu ändern?
http://docwiki.embarcadero.com/RADSt..._Autorisierung

Dort kann man also zusätzliche Infos zu Funktionen/Prozeduren, Klassen/Typen, Methoden, Propertys und Variablen hinterlegen, welche sich dann via RTTI auslesen lassen.
Das wurde auch an ein/zwei Stellen in den Delphi-Quellcodes angewendet. (aber ich weiß nicht mehr wo ich das gesehn hatte und Aufgrund der Syntax läßt es sich nicht grade leicht suchen)

Delphi-Quellcode:
type
  TMyAttribute = class(TCustomAttribute)
    constructor Create(S: string);
  end;

  [TMyAttribute('7')]
  TMySet = set of TMyEnum;

  ['direkt als Text']
  TMyEnum = type TMyEnum;

  [TMyAttribute('1')]
  TMyClass = class
    [TMyAttribute('8')]
    FMyField: Integer;
    [TMyAttribute('2')]
    [TMyAttribute('3')]
    procedure MyMethod2;
    [TMyAttribute('2'), TMyAttribute('3')]
    function MyMethod: Boolean;
    [TMyAttribute('4')]
    property MyProperty: Boolean read MyMethod;
  end;

var
  [TMyAttribute('5')]
  MyVar: Integer;

[TMyAttribute('6')]
procedure MyProcdure;
Und nun kann man sich die Klassen und eventuelle Parameter via RTTI auslesen/verarbeiten.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (30. Jan 2012 um 00:15 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: Rätselhaftes Konstrukt in Unit Dialogs

  Alt 30. Jan 2012, 00:09
Danke - wieder einiges dazugelernt
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Rätselhaftes Konstrukt in Unit Dialogs

  Alt 30. Jan 2012, 05:43
Beispiel für die Nutzung bei uns:
Per Attribut wird festgelegt welche XML-Knoten oder Datenbankeinträge zu den Feldern der Klasse gehören. Danach kann man die einfach an eine Funktion übergeben, die dann die Daten liest oder schreibt. Benutzen tun wir das z.B. bei Einstellungsklassen. Auf diese Weise müssen die Einstellungsklassen nichts über die Datenstrukturen wissen, in denen die Daten liegen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Rätselhaftes Konstrukt in Unit Dialogs

  Alt 30. Jan 2012, 09:21
Beispiel für die Nutzung bei uns:
Per Attribut wird festgelegt welche XML-Knoten oder Datenbankeinträge zu den Feldern der Klasse gehören. Danach kann man die einfach an eine Funktion übergeben, die dann die Daten liest oder schreibt. Benutzen tun wir das z.B. bei Einstellungsklassen. Auf diese Weise müssen die Einstellungsklassen nichts über die Datenstrukturen wissen, in denen die Daten liegen.
Mache ich genauso - als hätten wir voneinander abgeschrieben "Great minds think alike!"
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Rätselhaftes Konstrukt in Unit Dialogs

  Alt 30. Jan 2012, 09:24
Könnt ihr da mal ein beispiel zeigen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 23:46 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