[C++ Builder] Problem z folderem aktualnym

[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

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

Lecz mam też opcję wczytywania pliku poprzez OpenDialog

Kopiuj
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

edytowany 1x, ostatnio: madmike
madmike
  • Rejestracja:prawie 20 lat
  • Ostatnio:ponad 5 lat
0

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

Kopiuj
OpenDialog1->InitialDir = ExtractFilePath(Application->ExeName);

dzejo
  • Rejestracja:ponad 18 lat
  • Ostatnio:prawie 12 lat
  • Postów:787
0
Kopiuj
String PathApp ;

    PathApp = ParamStr(0);

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

edytowany 2x, ostatnio: dzejo
D6
  • Rejestracja:ponad 14 lat
  • Ostatnio:prawie 12 lat
  • Postów:76
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:

Kopiuj
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);

Kopiuj

czyli

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

Musisz popróbować bo nie mam buildera.

edytowany 1x, ostatnio: dejmien666
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.