Announcement

Collapse
No announcement yet.

TOpenDialog öffnet nicht unter Vista

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TOpenDialog öffnet nicht unter Vista

    Ich hätte da noch ein weiteres Problem. Das Ganze funktioniert unter Windows XP einwandfrei, unter Vista/Seven öffnet sich jedoch das FileOpenDialog-Fenster nicht:

    Code:
    void __fastcall TPersoForm::suiImageButton_LoadImageClick(
    	  TObject *Sender)
    {
    	std::string strDir = ExtractFilePath(Application->ExeName).c_str();
    	strDir += "default" ;
    
    	OpenDialog_Img->InitialDir = strDir.c_str();
    	if (OpenDialog_Img->Execute())
    	{
    	        ...
    	}
    }
    Unter Windows XP klappt das wie gesagt, führe ich die Anwendung unter Vista oder 7 aus, geht das Fenster nicht mehr auf. Ich hab das Projekt auch separat unter XP und 7 gedebuggt, unter 7 gibt "OpenDialog->Execute()" FALSE zurück, wodurch die Schleife übersprungen wird.
    "OpenDialog_Img" ist vom Typ "TOpenDialog". Ich habe es auch schon mit der Vista-Variante "TFileOpenDialog" versucht, allerdings öffnet sich da das Fenster auch nicht.

  • #2
    Warum arbeitest du mit std::string, wenn du die VCL benutzt??

    Die Klasse AnsiString oder kurz String leistet da besseres

    Ich habe hier auch Vista und alle TOpenDialoge arbeiten einwandfrei...
    Christian

    Comment


    • #3
      Originally posted by HorstHeine View Post
      Code:
      void __fastcall TPersoForm::suiImageButton_LoadImageClick(
      	  TObject *Sender)
      {
      	std::string strDir = ExtractFilePath(Application->ExeName).c_str();
      	strDir += "default" ;
      
      	OpenDialog_Img->InitialDir = strDir.c_str();
      }
      Abgesehen davon, daß Du nicht AnsiString verwendest: Warum packst Du in InitialDir einen Dateinamen und kein Verzeichnis? Warum verwendest Du nicht FileName für "default"?
      Dirk

      Comment


      • #4
        Originally posted by hgdorn View Post
        Abgesehen davon, daß Du nicht AnsiString verwendest: Warum packst Du in InitialDir einen Dateinamen und kein Verzeichnis? Warum verwendest Du nicht FileName für "default"?
        Ich glaub du verstehst das etwas falsch:

        Mit "ExtractFilePath(Application->ExeName)" hol ich mir den Pfad, in dem die ausführbare Datei des Programms liegt. Anschließend füge ich an diesen Pfad "default" hinzu, weil so der Name des Ordners lautet, aus dem Dateien geöffnet werden sollen. Dieser Ordner namens "default" liegt eben in dem Verzeichnis, in dem sich auch die .exe befindet.
        Im Endeffekt steht dann in InitialDir "pfadzurexe\default\" drin.

        Comment


        • #5
          Originally posted by HorstHeine View Post
          Ich glaub du verstehst das etwas falsch
          Stimmt, danke für die Aufklärung.
          Dirk

          Comment


          • #6
            Originally posted by hgdorn View Post
            Stimmt, danke für die Aufklärung.
            Du konntest ja nicht wissen, was "default" in meinem Code bedeutet .
            Ich hätte das gleich im ersten Post etwas genauer beschreiben müssen.

            Comment

            Working...
            X