LoadFromFile(const UnicodeString Dateiname);



  • Hallo

    Durch den Umstieg vom C++Builder 2007 auf den Builder 2009 liefert die
    Funktion "LoadFromFile(const UnicodeString Dateiname);" mit der Eingabe
    eines UnicodeStrings (z.B. "C:\\Programme\\Kochbuch\\4907.JPG") nur die
    Fehlermeldung:

    Datei "C:\\Programme\\Kochbuch\\4907.JPG" kann nicht geöffnet werden. Das
    Gerät ist nicht bereit. Anmerk.: Die Datei ist natürlich vorhanden.

    Wenn ich aber über einen OpenDialog die Funktion füttere
    (z,B."LoadFromFile(Opendialog1->FileName);"), so funktioniert der Ladevorgang
    einwandfrei. Erstaunlich dabei ist, dass beim Debuggen aus dem OpenDialog1->Dateinamen der gleiche Text ("C:\\Programme\\Kochbuch\\4907.JPG") auszulesen ist, wie vorher in den UnicodeString eingegeben wurde.

    Unter dem Builder 2007 arbeitete die Funktion mit dem AnsiString einwandfrei,
    wer weiß Rat, warum es nun nicht mehr funktioniert.

    Gert



  • ... bei mir funktioniert das einwandfrei.

    UnicodeString ucStr; 
    	UnicodeString ucStr1 = "D:\\xxx.jpg";
    
    	OpenDialog1->Filter = "JPG files (*.jpg)|*.JPG";
    
    	// Execute an open file dialog.
    	if (OpenDialog1->Execute())
    	{
    		// First, check if the file exists.
    		if (FileExists(OpenDialog1->FileName))
    		{
    			// If it exists, load the data into the memo box.
    			ucStr = OpenDialog1->FileName;
    
    			try
    			{
    				Image1->Picture->LoadFromFile(ucStr1);
    
    			}
    			catch (...)
    			{
    			}
    
    		}
    		else
    		{
    			// Otherwise, throw an exception.
    			throw(Exception("File does not exist."));
    		}
    	}
    

    Ob ich ucStr o. ucStr1 nehme, es gibt immer ein positives Rrgebnis.
    Beispiel ist aus der Embarcadero Hilfe übernommen.

    Gruß Dieter



  • Hallo Dieter,

    vielen Dank für Deine Info.

    Bei mir funktioniert die Dateinamen-Übergabe aus dem OpenDialog heraus auch,
    aber wenn ich den Dateinamen in einen UCString eingebe, sowie Du es gemacht
    hast mit dem ucstr1, so funktioniert es bei mir nicht mehr. Es ist aber für mich
    sehr wichtig, aus dem Programm heraus verschiedene Files zu laden, ohne dabei
    den Umweg über den OpenDialog zu machen sondern Namen und Pfad für das File
    programmseitig vorzugeben.

    Vielleicht hast Du ja noch eine Idee, woran der Fehler bei mir liegen könnte.

    Gruß Gert



  • Ändere bitte

    UnicodeString ucStr1 = "D:\\xxx.jpg";
    

    zu

    UnicodeString ucStr1 = L"D:\\xxx.jpg";
    

    funktioniert es dann?

    Edit: Vielleicht solltest du auch mal etwas Programmcode zeigen.



  • ... bei mir funktioniert es. Die Zuweisung an den UnicodeString ist polymorphisch.

    Es wäre mal gut, den eigentlichen Code zu sehen.

    Dieter



  • Versuch mal deine Dateien nicht von C:\Programme\... zu laden sondern von einem anderen Pfad.
    C:\Programme ist bei Windows teilweise ein Link bzw eine Art Alias.

    MfG Stephan



  • Hallo zusammen!

    Ich danke Euch sehr für die Eure Unterstützung!

    Der Vorschlag von Burki hat leider nicht funktioniert aber die Idee von Stephan
    hat mich auf die richtige Spur geführt 😋

    Ich habe den Code C:\\Programme\\Kochbuch..... in C:\\ Program Files\\Kochbuch...
    geändert und schon hat es funktioniert.

    Ich hatte schon tagelang im Internet gesucht, um eine Lösung für diesen Fehler zu
    finden, da mein Kochbuch-Programm ohne die Funktionen LoadFromFile und SaveFileTo
    absolut untauglich wäre. Deshalb nochmals vielen Dank.

    Gruß Gert