[C++ Builder] Problem z folderem aktualnym

0

Witam, mam za pewne banalny problem lecz nie potrafię sobie z nim poradzić.

W jednej części programu używam bitmap znajdujących sie w folderze projektu

 PPrzewodnik->Picture->LoadFromFile("przewodnik.bmp");

Lecz mam też opcję wczytywania pliku poprzez OpenDialog

void __fastcall TForm1::Wczytaj1Click(TObject *Sender)
{
    OpenDialog1->Filter="format *.ak|*.ak";
    OpenDialog1->DefaultExt="ak";
    if(OpenDialog1->Execute())
    {
        char *nazwa=OpenDialog1->FileName.c_str();

        int rozm;
        char war;
        ifstream plik(nazwa,ios::binary);
        if(plik)
        { 
		...
	} 
	} 
}

Wszystko wczytuje się porpawnie wiec nie bedę podawała całego kodu, problem jest w tym że po wybraniu i wczytaniu pliku, bitmapy są szukane w folderze gdzie znajduje sie wczytany plik a nie tak jak powinno w folderze projektu. Niestety nie mogę podać ścieżki bezwzględnej, wiec moje pytanie jak rozwiązać ten problem? Jak "przejsc" do folderu projektu po wczytaniu pliku?

Z góry dziękuję za pomoc

0

Nie mam tu builera, ale coś takiego dodane przed wywołaniem OpenDialog1->Execute() powinno spowodować, że OpenDialog "startuje" w katalogu aplikacji:

OpenDialog1->InitialDir = ExtractFilePath(Application->ExeName);
0
String PathApp ;

    PathApp = ParamStr(0);

    /*sciężka do folderu aplikacji->*/PathApp= ExtractFilePath(PathApp);
0

Chyba nie o to chodziło. Chodziło o to że z jakichś względów nie może podać ścieżki bezwzględnej do programu - jedynie ścieżkę względną od exe.

Nie znam za dobrze buildera, ale coś takiego powinno zadziałać.

Sprawdź co daje wynik funkcji:

ExtractFileName(fullFileName);

Jeżeli to nie da nazwy pliku z rozszerzeniem (wyświetl sobie w labelce jakiejś by sprawdzić) to dodaj do tego ExtractFileExt(fullFileName);


czyli

```cpp
jakisTamStringZSciezkaWzgledna = ExtractFileName(fullFileName) + "." + ExtractFileExt(fullFileName);

Musisz popróbować bo nie mam buildera.

0

Dzieki bardzo wszystko już działa poprawnie :) przy wczytywaniu obrazów wziełam :
Image1->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+"Obrazy\\BramkaNAND.jpg");

1 użytkowników online, w tym zalogowanych: 0, gości: 1