AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mutex-Handling in DLL für zwei Programme
Thema durchsuchen
Ansicht
Themen-Optionen

Mutex-Handling in DLL für zwei Programme

Ein Thema von TheSledgeHammer · begonnen am 22. Mai 2019 · letzter Beitrag vom 23. Mai 2019
 
TheSledgeHammer

Registriert seit: 22. Mai 2019
Ort: Mulfingen
43 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Mutex-Handling in DLL für zwei Programme

  Alt 23. Mai 2019, 06:44
Die Deklaration ist falsch, die von der DLL exportierten Methoden sind nicht "of object"!
Mit deiner obigen Deklaration wird beim Aufruf ein zusätzlicher Parameter (Self) übergeben, den die DLL aber nicht erwartet. Das bringt den Call-Stack durcheinander.
Ok, danke für den Hinweis. Tatsächlich sollte ich mir die Direktive "of object" mal noch genauer zu Gemüte führen, denn dass das automatisch zu einem "self"-Parameter führt, war mir jetzt nicht bewusst. Da bliebe jetzt noch die Frage offen, weshalb das zwar für DLL-Funktionen weg bleiben muss, bei Funktionen, die innerhalb des Delphi-Programms ausgetauscht werden, aber nicht weg bleiben darf?! Da kommt dann nachher nämlich der Compiler-Fehler "Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger'".

Im Konkreten Fall deklariere ich sowas hier:
Delphi-Quellcode:
TErrCallback = procedure(const AMsg: string) of object;
FCallbackOnError: TErrCallback;
und belege die Variable FCallbackOnError dann mit der Prozedur:
Delphi-Quellcode:
// Deklaration
procedure ShowErrorMessage(const AMsg: string);
// Definition
procedure TFormClass.ShowErrorMessage(const AMsg: string);
begin
  MessageDlg(AMsg, mtError, [mbOK], -1);
end;
Edit
Hab meine Frage glaub selbst beantwortet. Unten aufgeführter Link gibt da das entsprechende Stichwort:
Code:
Ein Methodenzeiger wird in Form zweier Zeiger codiert, von denen der erste die Adresse der Methode speichert, während der zweite eine Referenz auf das Objekt enthält, zu dem die Methode gehört.
http://docwiki.embarcadero.com/RADSt...zedurale_Typen
Tobias

Geändert von TheSledgeHammer (23. Mai 2019 um 06:55 Uhr)
  Mit Zitat antworten Zitat
 


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 01:48 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