Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Delphi 2005 Personal - AV bei AltGr mit MainMenu (https://www.delphipraxis.net/83857-delphi-2005-personal-av-bei-altgr-mit-mainmenu.html)

FAlter 7. Jan 2007 14:44


Delphi 2005 Personal - AV bei AltGr mit MainMenu
 
Hi,

Ein Problem, bei dem mit Google nicht helfen will, da ich damit nur Infos über den IDE-Bug finde, welcher mich jedoch nicht betrifft. Wenn ich unter Delphi 2005 Alt Gr drücke, passiert nichts besonderes.

Mein Problem: Dieser Bug existiert zwar nicht in der IDE, jedoch in fast allen meiner Programme. Nachdem ich ihn gerade eben entdeckt habe, finde ich ihn wirklich bei den meisten mit D2005 entwickelten Programmen. Daher habe ich mich auif Fehlersuche begeben:

1. Ich habe ein neues Programm eratellt, das Form leer gelassen und gestartet. Alt Gr funktioniert problemlos.

2. Ich habe ein MainMenu auf das Form gelegt und erneut gestartet Alt Gr führt zur AV.

3. Mit CPU-Fenster und F7 habe ich den Fehler gesucht. In einer Funktion namens IsAltGrPressed wird GetAltGrStatus aufgerufen, wo etwas aus der Registry gelesen wird, dann eine DLL geladen, und GetProcAdress liefert nil (000000) zurück. Daher schlägt "call ebx" fehl (vorher wird der Rückgabewert von eax in ebx kopiert).

Da ich D2005 Personal habe, sieht es hier schlecht aus mit Updates. Ich möchte jedoch unbedingt diese Exception vermeiden, da sie daran hindert, in meinem Programm \[]{}²³ einzugeben.

Eigenartigerweise kommt sie nicht in allen Fällen, bei FAlterWriter und FAF-Basic kann ich Alt Gr drücken, sonst wäre mir das schon früher aufgefallen.

Mfg
FAlter

//ebx natürlich, nicht ebc (komisches Register)
//Tag-Klammer korrigiert ({ statt [ verwendet)

SirThornberry 7. Jan 2007 14:47

Re: Delphi 2005 Personal - AV bei AltGr mit MainMenu
 
und wenn du einfach mal einen Haltepunkt setzt und schaust warum bei dem einen Spiel keine Exception kommt? Zudem könntest du auch mit "Assigned" prüfen ob der Rückgabewert von GetProcAddress ungleich nil ist.

Insider2004 7. Jan 2007 15:02

Re: Delphi 2005 Personal - AV bei AltGr mit MainMenu
 
Da Du eine Personal hast, würde ich empfehlen, diese in die Tonne zu treten und das kostenlose Turbo Delphi 2006 zu nehmen. Das ist ein *wenig* besser. Wenn Du mit einer vernünftigen IDE arbeiten willst, dann bleibt Dir nur Delphi 6 oder 7.

FAlter 7. Jan 2007 15:47

Re: Delphi 2005 Personal - AV bei AltGr mit MainMenu
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 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