Hi,
Zitat:
Zudem könntest du auch mit "Assigned" prüfen ob der Rückgabewert von GetProcAddress ungleich nil ist.
Kann ich nicht, da ich den Sourcecode der DCUs nicht habe und dies eine Funktion der
VCL ist (letztendlich von TCustumForm.IsShortCut oder so aufgerufen). Dies erschwert außerdem das Debuggen...
Zitat:
Da Du eine Personal hast, würde ich empfehlen, diese in die Tonne zu treten und das kostenlose Turbo Delphi 2006 zu nehmen.
Für neue Projekte nehme ich auch meist TD, aber die älteren Programme, welche "Fremdkompkinenten" (oder meine eigenen) verwenden, sind da ein wenig kompliziert, da man die Komponenten zur Laufzeit erstellen müsste. Bei mehreren Formularen mit jeweils mehreren "Fremdkomponenten" mit unzähligen Eigenschaften ist dies ein Haufen Arbeit. Daher suche ich nach einer möglichst weniger aufwändigen Lösung. Wenn ich ein wenig gespart habe, kann ich mir ja auch 'ne Professional kaufen, aber bis dahin muss es mit Explorer oder Personal funktionieren.
Notnagel wäre natürlich wie bei allen Exceptions ein Application.OnException:
Delphi-Quellcode:
begin
if not (E
is EAccessViolation)
then
begin
MessageBox(
Handle, PChar(E.
Message), PChar(
String(E.ClassName)),
MB_OK
or MB_ICONEXCLAMATION);
//oder Application.ShowException(E);
end;
end;
aber schön ist das nicht und außerdem werden damit alle AVs ignoriert, auch die ohne Alt Gr auftretenden.
Daher suche ich eben nach einer eleganten, möglichst weniger aufwändigen Lösung als ein Upgrade nach TurboExplorer.
Mfg
FAlter
PS: Delphi 6 UP2 ist auch keine vernünftige Lösung, da kommt bei ImageLists, wenn man deren Inhalt per Designer (Doppelklick) generiert, und das Programm dann unter Windows 98 ausführt, eine 'Allgemeine Schutzverletzung' in der KERNEL32.DLL.
//Nachtrag:
Wenn man die
AV per Application.OnException ignoriert, so kann man auch nicht mehr über Alt Gr + Taste Sonderzeichen eingeben.