Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Problem unter WinXP ("Diese Anwendung konnte nicht ...") (https://www.delphipraxis.net/168305-problem-unter-winxp-diese-anwendung-konnte-nicht.html)

Pentium 80486 14. Mai 2012 17:24

Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Hallo an alle,

derzeit habe ich ein sehr nerviges Problem mit meiner Anwendung unter Windows XP. Das XP war zuvor mit SP2 ausgestattet und SP3 habe ich nachinstalliert.

Folgende Meldung erscheint (bei "Anwendungskonfiguration " fehlt das "d"):
Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren.
- mein Projekt hat zehn Formulare. Der Fehler tritt nur bei zwei der zehn Formulare unter Windows XP auf
- das Projekt benutzt keine Manifeste o.ä.
- Umlaute können den Fehler nicht verursachen, da die anderen acht Formulare ebenfalls Umlaute beinhalten

Nun das Schlimmste:
- wenn ich bei einem der fehlerhaften Formulare restlos alle visuellen und nicht visuellen Komponenten von der Form entferne und allen Code in Kommentarblöcke setze, tritt der Fehler ebenfalls auf!

Was kann hier die Ursache sein?

RWarnecke 14. Mai 2012 17:38

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Taucht die Fehlermeldung während Du im Programm eine Aktion ausführst auf oder beim Starten des Programms ? Ich habe die gleiche Fehlermeldung schonmal gehabt und da lag es definitiv an meinem Manifest.

Nachtrag:
Mit welcher Version von Delphi arbeitest Du ? Bei XE2 sind die Runtime-Themes standardmäßig mit aktiviert.

Pentium 80486 14. Mai 2012 17:43

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Das Problem taucht während des Starts des Programms unmittelbar nach dem OnCreate des Hauptformulars auf (danach werden ja die anderen Formulare erzeugt).
Aber ein komplett leeres Form erzeugt selbst einen Fehler, das ist ja das Schlimme daran.

Je nach Build kommt die Fehlermeldunng auch mal nicht und es kommt einfach nur:
ABC hat ein Problem festgestellt und muss beendet werden.
Problembericht senden | Nicht senden
Am Manifest kann es nicht liegen, denn das Programm benutzt das Default Manifest von der IDE (laut Einstellungen). Andere "Exen" funktionieren reibungslos.

Ich benutze seit neuesten XE2.
Die Einstellung der Themes steht auf "Laufzeit-Themes aktivieren" (ComboBox).
Auch wenn ich diese deaktivere ("keine") tritt der Fehler auf.

hoika 14. Mai 2012 18:18

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Hallo,

Zitat:

danach werden ja die anderen Formulare erzeugt
Warum immer alle alle Formulare erzeugen,
ist mir immer ein Rätsel geblieben.

Was passiert, wenn du die anderen Formulare nicht erzeugst ?

Was sagt denn MadExcept dazu ?


Heiko

Pentium 80486 14. Mai 2012 18:36

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Es liegt nicht am erzeugen selbst, davon gehe ich aus. Es liegt an den Formularen.
Wenn ich beiden fehlerhaften Formulare nicht erzeuge, kommt natürlich kein Fehler. Aber ich muss sie ja erzeugen, um darauf zugreifen zu können.

MadExcept sagt tatsächlich etwas!
Die Exception Message ist: Fehler beim Festlegen des Pfades "C:\Users\ABC\Desktop".
Der richtige Benutzername wurde hier von mir durch ABC ersetzt.

Das Problem hier wiederum:
wieso ABC\Desktop? Ich befinde mich in einer VM VirtualBox, XP SP3) und dort liegt die Exe NICHT auf dem Desktop!

In meinem Source steht C:\Users\ABC\Desktop auch nirgendwo hard coded.


Edit:
Problem gelöst!
Auf einem vollkommen anderen Formular, welches laut IDE fehlerfrei sein sollte, enthielt eine Komponente, welcher man im Objektinspektor einen Root-Pfad zuweisen konnte.
Dieser war, warum auch immer, auf mein Windows 7-System festgelegt und wurde erst später, nachdem alles erzeugt wurde, auf das aktuelle System festgelegt.

Luckie 14. Mai 2012 18:51

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Du willst und hoffentlich jetzt nicht damit sagen, dass in der Komponente Pfade hardgecodet sind?

Popov 14. Mai 2012 18:54

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Ok, das Problem ist gelöst. Ich hätte drauf getippt, dass Mainform OnCreate auf eine Komponente eines anderen Formulars zugreift, was zu dem Zeitpunkt ja noch nicht da ist.

Edit:
Zitat:

Zitat von Luckie (Beitrag 1166529)
Du willst und hoffentlich jetzt nicht damit sagen, dass in der Komponente Pfade hardgecodet sind?

Naja, wo du es ansprichst, ich habe auch schon mal auf C:\ als "Ausweichpfad" verwiesen, statt einen leeren String als Pfad zu liefern. Aber du hast mich zum überlegen angeregt, vielleicht sollte man auch sowas triviales nicht machen.

Pentium 80486 14. Mai 2012 19:09

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Zitat:

Du willst und hoffentlich jetzt nicht damit sagen, dass in der Komponente Pfade hardgecodet sind?
Die Komponente ist leider "dumm" und verlangt im Objektinspektor einen Default-Pfad. Große Lust das umzuschreiben, habe ich nicht.

Luckie 14. Mai 2012 19:13

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Das heiß, es läuft jetzt nicht unter Vista und Windows 7? Tolle Komponente. Gibt es da keine Alternative bzw. wie heißt die Komponente?

Pentium 80486 14. Mai 2012 19:20

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Doch, läuft auch unter Windows Vista und Windows 7.

Der einzige Nachteil ist, dass man im Obektinspektor einen Default-Root-Pfad angeben muss.
Der steht nun auf C:\.

Sollte also jemand mein Programm später nutzen, und dieser hat keine C-Partition (warum auch immer), knallt es.

Es handelt sich hierbei um eine Ableitung von TShellTreeView.

schöni 14. Mai 2012 19:34

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Zu DOS Zeiten gab es mal einen Befehl ( Share, glaub ich ), damit konnte man einem Laufwerk einen anderen Laufwerksbuchstaben zuweisen.

Popov 14. Mai 2012 19:35

AW: Problem unter WinXP ("Diese Anwendung konnte nicht ...")
 
Es gibt vielleicht auch besseren Code, aber hier mal etwas auf die Schnelle, statt C:\

Delphi-Quellcode:
function GetTempDir: String; //Temp-Pfad
var
  Dir: array[0..MAX_PATH+1] of Char;
begin
  GetTempPath(SizeOf(Dir), Dir);
  Result := String(Dir);
end;


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