AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Delphi 2005 Personal - AV bei AltGr mit MainMenu
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 2005 Personal - AV bei AltGr mit MainMenu

Offene Frage von "FAlter"
Ein Thema von FAlter · begonnen am 7. Jan 2007 · letzter Beitrag vom 7. Jan 2007
Antwort Antwort
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#1

Delphi 2005 Personal - AV bei AltGr mit MainMenu

  Alt 7. Jan 2007, 15:44
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)
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Delphi 2005 Personal - AV bei AltGr mit MainMenu

  Alt 7. Jan 2007, 15:47
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Insider2004
(Gast)

n/a Beiträge
 
#3

Re: Delphi 2005 Personal - AV bei AltGr mit MainMenu

  Alt 7. Jan 2007, 16:02
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.
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Delphi 2005 Personal - AV bei AltGr mit MainMenu

  Alt 7. Jan 2007, 16:47
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.
Felix Alter
  Mit Zitat antworten Zitat
Antwort Antwort


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