AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Die alte Leier: Zirkulaere Referenzen, aber warum nicht so: ...?
Thema durchsuchen
Ansicht
Themen-Optionen

Die alte Leier: Zirkulaere Referenzen, aber warum nicht so: ...?

Ein Thema von hzzm · begonnen am 25. Jul 2017 · letzter Beitrag vom 27. Jul 2017
Antwort Antwort
Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Die alte Leier: Zirkulaere Referenzen, aber warum nicht so: ...?

  Alt 25. Jul 2017, 07:19
Hallo hzzm,

wenn ich dich richtig verstehe, dann versuchst du eine einfache Callback-Funktionalität zu realisieren, richtig? Du möchtest also in UnitX.pas deine MainForm aktualisieren.
Was an deinem Beispiel ungünstig ist, ist die globale Variable in der Unit MyMainProxy. Diese könnte von jeder Stelle aus dem Programm überschrieben werden und dann wunderst du dich vllt später, weshalb etwas nicht funktioniert.

Eine einfache andere Möglichkeit wäre z.B. folgende:
Du erstellst eine Klasse in UnitX.pas, welche das Feld "FMMSetGUIValue: Procedure of Object;" enthält (public)
In der MyMain.pas erzeugst du diese Klasse und weißt dem Feld "FMMSetGUIValue" die Funktion "SetGUIStatusOn" zu.
Nun kannst du in UnitX.pas an jeder beliebigen Stelle FMMSetGUIValue aufrufen. Vergiss aber nicht vorher mit Assigned zu prüfen, ob dem Feld auch wirklich eine Funktion zugewiesen wurde.

Grüße
Headbucket
  Mit Zitat antworten Zitat
hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#2

AW: Die alte Leier: Zirkulaere Referenzen, aber warum nicht so: ...?

  Alt 25. Jul 2017, 07:36
Wie kann ich denn auf Deine oder meine Art Parameter uebergeben?
Wenn ich ein Objekt als "Procedure of Object" initialisiere, funktioniert keine Syntax um einen Parameter mit anzugeben; MMSetGUIValue(Name: String);

Beim Zuweisen im FormCreate geht's auch nicht:
Code:
MMSetGUIValue := SetGUIStatusOn(Name: String);
"')' erwartet, aber ':' gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Die alte Leier: Zirkulaere Referenzen, aber warum nicht so: ...?

  Alt 25. Jul 2017, 07:50
Wie kann ich denn auf Deine oder meine Art Parameter uebergeben?
Delphi-Quellcode:
type
  TMySetGUIValueProc = procedure(const Value: string) of object;
var
  MMSetGUIValue: TMySetGUIValueProc = nil;



procedure UnitX.PerformHCoreOperation;
begin
  MMSetGUIValue('Hallo MainForm!');
end;

Entspricht ungefähr diesem Vorgehen: How to access delphi function at DPR scope
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming

Geändert von Uwe Raabe (25. Jul 2017 um 07:54 Uhr)
  Mit Zitat antworten Zitat
hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: Die alte Leier: Zirkulaere Referenzen, aber warum nicht so: ...?

  Alt 25. Jul 2017, 08:21
Danke Euch beiden.
Funktioniert wunderbar, auch in meinem (fraglichen) Original Schnipsel:
Delphi-Quellcode:
unit StatusProxy;

interface

var
  STFBenutzerEinstellen: Procedure(Name: String) of Object;
  STFGUILeeren: Procedure of Object;

implementation

end.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 19:21 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