Da bei diesem Code Module/FunctionName nur gelesen und außerhalb der Funktion keine Referenzen darauf gespeichert werden, also Zugriff ausschließlich lesend innerhalb dieser Methode,
würde es hier auch ohne SharedMem keine Probleme geben, da keinerlei Zugriffe auf den/die SpeicherManager anfallen.
dürfte ich fragen wie das gemeint ist?
Solcher Code ist immer böse. (Char PChar String)
Function LinkAPI(Const Module, FunctionName: String; ShowError: Boolean): Pointer; StdCall;
Mit Delphi 7 compiliert macht der Compiler das daraus
Function LinkAPI(Const Module, FunctionName: AnsiString; ShowError: Boolean): Pointer; StdCall;
aber in XE oder 10.x kompiliert kommt aber sowas aus dem Compiler
Function LinkAPI(Const Module, FunctionName: UnicodeString; ShowError: Boolean): Pointer; StdCall;
.
Also EXE mit dem Einem und
DLL mit dem Anderen compiliert ... schon passt es nicht zusammen.
Ist das selbe Problem, wie wenn du das Eine mit STDCALL compilierst, aber das Andere nicht.
Und Delphi-Exceptions über
DLL/EXE-Grenzen hinweg funktionieren auch nicht so gut, außer du arbeitest mit Laufzeitpackages und abeitest auf beiden Seiten mit den selben
Exception-Klassen. (gemeinsame
RTL, bzw. gemeinsamme
RTTI)
Ach ja, bei
Zitat:
Delphi-Quellcode:
try
Application.NormalizeAllTopMosts;
...
Application.RestoreTopMosts;
except
Application.RestoreTopMosts;
end;
meinst du doch bestimmt eher
Delphi-Quellcode:
Application.NormalizeAllTopMosts;
try
...
finally
Application.RestoreTopMosts;
end;
, vorallem da in dem Except-Block sämtliche Exceptions "fahrlässig" vernichtet werden.
Das kann doch nicht wirklich so gewollt sein?