Problem mit Relativen Links in Funktion LoadFromFile();

Rubilak

Grünschnabel
Hallo an alle Mitglieder.

Ich habe folgendes Problem:
Ich habe auf meinem Formular ein Objekt TImage angelegt, welches als Button dienen soll, d.h wenn ich draufklicke wechselt das Bild. Da das Programm mal hier, mal da auf dem Rechner sein soll muss ich in der Funktion Image->Picture->LoadFromFile("..."); relative Links als verwenden. Hier der Quelltext zur besseren Vorstellung:

void __fastcall TForm1::BRepeatClick(TObject *Sender)
{
if(BRepeat->Tag == 0)
{
BRepeat->Tag = 1;
BRepeat->Picture->LoadFromFile("Buttons\\Repeat.bmp");
BRepeat->Hint = "Playlist wiederholen: ein";
}
else
if(BRepeat->Tag == 1)
{
BRepeat->Tag = 0;
BRepeat->Picture->LoadFromFile("Buttons\\NRepeat.bmp");
BRepeat->Hint= "Playlist wiederholen: aus";
}


Beim ausführen funktioniert ja alles einwandfrei, aber wenn man zusätzlich noch einen TOpenDialog oder einen TSaveDialog einbaut und die Eigenschaft FileName während der Laufzeit belegt wird, so findet die LoadFromFile Eigenschaft des Bildobjektes den Relativen Link nicht mehr.

Kann mir jemand erklären, was ich da machen kann? Ich bin igendwie ratlos. Ich bräuchte irgendwie den absoluten Pfad des Programms, aber da kenne ich keinen Befehl dafür.
 

Turri

Erfahrenes Mitglied
Hallo,

Deinen Absoluten Pfad kannst du dir ja selbst zusammenbauen.
Code:
...
AnsiString deinAbsoluterPfad = GetCurrentDir();
deinAbsoluterPfad += "\\Buttons\\NRepeat.bmp";
...

Durch GetCurrentDir, kann dein Programm liegen wo es will, und du bekommst deinen aktuellen Pfad, das "relative" musst du dann selbst anhängen.

MfG Turri
 

Rubilak

Grünschnabel
He Danke für deine Hilfe.

Ich war mir ja schon fast sicher, dass es so einen Befehl gibt, aber ich wusste ihn halt nicht. :)