Einzelnen Beitrag anzeigen

Carsten1234

Registriert seit: 9. Apr 2008
Ort: Vechelde
178 Beiträge
 
Delphi 8 Professional
 
#1

Applikation läuft nicht unter Windows7

  Alt 5. Aug 2009, 09:21
Hallo zusammen,

ich habe mal "spasseshalber" versucht, meine Applikation (ich habe Delphi 2007) unter Windows 7, Build 7100, zum Laufen zu bekommen - leider erfolglos.
Das Programm (Teile des Quelltextes hier) läuft kurz an, dann erfolgt seitens Windows die Meldung "Programm funktioniert nicht. Es wird nach einer Lösung gesucht", dann schliesst sich dieser Dialog wieder und das war es. Keine Fehlermeldung, kein nix. Da ich als Admin auf dem System angemeldet bin, kann es also auch keine Probleme mit Zugriffsrechten geben und auch der Kompatibilitätsmodus bringt keine Abhilfe. Nichts desto trotz läuft mein Programm sowohl unter W2K als auch unter Win XP und Vista (auf allen Systemen getestet).
Ich erstellte eine kl. Applikation mit einem Hauptformular und einem Label und das lief unter Win7.

Daraufhin begann die Ursachenforschung in meinem Programm, indem ich eine temporäre Textdatei erstelle/öffnete und an div. Stellen Eintragungen in diese Textdatei schrieb, um einfach mal zu sehen, wo das Programm aussteigt. So bin ich nun fündig geworden, doch ich habe keine Erklärung dafür, WARUM es an dieser Stelle aussteigt.
Alle meine Unterformulare haben ein gemeinsames Formular namens TBaseForm.

Delphi-Quellcode:
TBaseForm = class(TForm)
  private
    { Private-Deklarationen }
    FSideName : string;
    FPageIdx : integer;
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent; AWinControl: TWinControl;
                       ASideName: string; APageIDX: integer); reintroduce; overload;

    property PageIdx: integer read FPageIdx;
    property SideName: string read FSideName;
  end;

constructor TBaseForm.Create(AOwner: TComponent; AWinControl: TWinControl;
                         ASideName: string; APageIDX: integer);
{$ifdef DEBUG}
var FOut : System.Text;
    IOResult: integer;
{$endif}
begin
{$ifdef DEBUG}
{$I-}
  System.AssignFile(FOut, ExePath + 'appinit.txt');
  System.Append(Fout);
{$I+}
  IOResult:= System.IOResult;
  if (IOResult = 0) then
  begin
    System.Writeln(FOut, 'Step in Constructor BaseForm');
    if (AOwner = nil) or (not Assigned(AOwner)) then
      System.Writeln(FOut, 'AOwner is nil')
    else
      System.Writeln(FOut, 'Set AOwner');
    System.CloseFile(FOut);
  end;
{$endif}
  inherited Create(AOwner);

  Self.Parent:= AWinControl;
  FSideName:= ASideName;
  FPageIdx:= APageIdx;
end;
Delphi-Quellcode:
TMySubForm1 = class(TBaseForm)
(...)
// kein Constructor
end;
Wird TMySubForm1 erstellt, lande ich zwangsläufig im Constructor der BaseForm. Doch wenn hier der/die/das inherited Create aufgerufen wird, steigt mein Programm offensichtlich aus. Nun dachte ich, es könnte ja sein, dass der Owner NIL ist, daher erweiterte ich das ganz um einen try..except Block mit Debugausgabe in die Textdatei, doch der Except-Fall tritt nie ein.


Debugausgabe:
Delphi-Quellcode:
Step in Constructor BaseForm
Set AOwner
Frage: Hat jemand eine Idee, woran es liegen könnte und/oder hatte schon mal ein ähnl. Problem (unter Win7)?

Dank vorab und Gruß, Carsten
  Mit Zitat antworten Zitat