AGB  ·  Datenschutz  ·  Impressum  







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

Feststellen ob Anwendung die VCL verwendet

Ein Thema von igel457 · begonnen am 1. Jun 2010 · letzter Beitrag vom 2. Jun 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Feststellen ob Anwendung die VCL verwendet

  Alt 1. Jun 2010, 22:21
Zitat von himitsu:
Eine zündene Idee, wie der Anwender doch mithilft.
PS: Nur weil die VCL eingebunden ist, muß sie bei den Events dennoch keine Rolle spielen.

Bau doch einfach ein Feld/Property in deiner Komponente ein, wo man den SyncMode wählen kann.
(per Standard auf VCL-Synchronize ... sicher ist sicher, falls man das Setzen vergist)
Habe ich (mehr oder weniger)... Ist zwar keine Komponente, aber man kann einfach mittels folgender Funktionen...
Delphi-Quellcode:
{Allows you to set an own instance of a notification processor. This method has to be called before any other notification system procedure has been used.
@seealso(TAcNotifyProcessor)}

procedure AcNotifyManualSetProcessor(ANotifyProcessor: TAcNotifyProcessor);
{If you've initialized the notification queue system using the AcNotifyManualInit function, you must use this function to synchronize the notifications with the thread calling AcNotifyManualProcessQueue.
@seealso(AcNotifyManualInit)}

procedure AcNotifyManualProcessQueue;
{Initializes the notification system with TAcManualNotifyProcessor, allowing you to use the AcNotifyManualProcessQueue function.
@seealso(AcNotifyManualProcessQueue)}

procedure AcNotifyManualInit;
...beim Programmstart einen eigenen Prozessor für die Events festlegen oder auf den oben beschriebenen manuellen Modus umschalten. Macht man gar nichts wird bei der ersten Verwendung der Notify-Funktionalität der Standard ausgewählt. Entweder der TAcVCLNotifyProzessor oder eben der TAcNonVCLNotifyProcessor.

Ich möchte eben nur irgendwie automatisch den Standardprozessor setzen...
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Feststellen ob Anwendung die VCL verwendet

  Alt 1. Jun 2010, 23:10
Also letztlich geht es ja um die Synchronize-Methode, oder? Wäre es da nicht u.U. einfacher zu prüfen, ob die "Maschinerie", die den internen Synchronize-Queue abarbeitet, existiert, als zu prüfen, ob die VCL eingebunden wurde? Ich habe da beim Überfliegen der Synchronisations-methoden in der Unit Classes den globalen Funktionszeiger "WakeMainThread" gefunden. Auf den ersten Blick scheint er ein ganz gutes Indiz zu sein:
Delphi-Quellcode:
if Assigned(WakeMainThread) then
   // VCL
else
  // NonVCL
Ich habe es nur kurz anhand einer neu erstellten VCL-Applikation bzw. einer leeren Konsolenapplikation getestet, dort lieferte der Test aber jedenfalls das korrekte Ergebnis.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Feststellen ob Anwendung die VCL verwendet

  Alt 2. Jun 2010, 22:28
Hallo,

dein Code funktioniert - auch mit Lazarus wird korrekt auf das vorhandensein der LCL (bzw. eines Handlers für Synchronize, was in der Tat das ist, was ich eigentlich möchte) hingewiesen.

Vielen Dank,
Andreas
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04: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