![]() |
Applikation läuft nicht unter Windows7
Hallo zusammen,
ich habe mal "spasseshalber" versucht, meine Applikation (ich habe Delphi 2007) unter Windows 7, Build 7100, zum Laufen zu bekommen - leider erfolglos. :evil: Das Programm (Teile des Quelltextes ![]() Ich erstellte eine kl. Applikation mit einem Hauptformular und einem Label und das lief unter Win7. :gruebel: 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:
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.
TMySubForm1 = class(TBaseForm)
(...) // kein Constructor end; Debugausgabe:
Delphi-Quellcode:
Frage: Hat jemand eine Idee, woran es liegen könnte und/oder hatte schon mal ein ähnl. Problem (unter Win7)?
Step in Constructor BaseForm
Set AOwner Dank vorab und Gruß, Carsten |
Re: Applikation läuft nicht unter Windows7
System.AssignFile(FOut, ExePath + 'appinit.txt');
ganz böse! Niemals Logdateien oder INI Dateien in den Programmordner packen! Aber Vista hats du standardmäßig keine Adminrechte mehr (UAC), also kannst du nicht mehr in den Ordner C:\Programme schreiben. |
Re: Applikation läuft nicht unter Windows7
Zitat:
Delphi-Quellcode:
TempPath:= SysUtils.GetEnvironmentVariable('temp');
|
Re: Applikation läuft nicht unter Windows7
Zitat:
|
Re: Applikation läuft nicht unter Windows7
egal, mit aktivierter UAC wird immer der eingeschränkte Nutzertoken benutzt und du hast damit Standardbenutzerrechte.
Schreib die Logdatei immer in den Temp Ordner und poste mal was da drin steht. |
Re: Applikation läuft nicht unter Windows7
Zitat:
Hier wird (standardmässig) definitiv nix auf HDD geschrieben und in meiner DEBUG-Anweisung wird die 'appinit.txt' ja erzeugt. |
Re: Applikation läuft nicht unter Windows7
Zitat:
Step in Constructor BaseForm Set AOwner Als nächstes hätte noch stehe müssen: Set parent Set sidename Step out Constructor BaseForm Doch diese drei Einträge fehlen völlig, das Programm scheint sich also (offensichtlich) beim inherited Create(AOwner) zu verabschieden... Unter WinXP oder Vista sieht es so aus (für jedes Unterformular): Step in Constructor BaseForm Set AOwner Set parent Set sidename Step out Constructor BaseForm Step in Constructor BaseForm Set AOwner Set parent Set sidename Step out Constructor BaseForm |
Re: Applikation läuft nicht unter Windows7
Noch ein Nachtrag zum UAC:
Auf den Programmordner nebst Unterordner haben sowohl die Administratoren als auch die Benutzer der Maschine Vollzugriff (erhalten über Eigenschaften => Sicherheit). |
Re: Applikation läuft nicht unter Windows7
OT: Oh oh ... drei Beiträge hintereinander und die Möglichkeit Beiträge zu editieren ist dir auch bekannt. Mach das lieber nicht:
![]() Zitat:
|
Re: Applikation läuft nicht unter Windows7
Kannst du das nicht mal versuchen zu kompilieren?
MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz