Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

Xcode C,C++ - pliki zewnętrzne


  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 Brazol

Brazol
  • 174 postów
  • SkądStolica

Napisano 29 listopada 2008 - 11:41

Witam,
Uczę się programować w C na uczelni a w C++ kożystając z biblioteki Allegro w domu. I mam problem który próbowałem rozwiązać naprawdę masę czasu i przeszukałem cały internet :)
Otóż: Gdy programowałem w C i potrzebowałem skorzystać z zewnętrznego pliku .txt np. żeby wypisać jego zawartość nie mogłem znaleźć miejsca w folderze projektu gdzie po wrzuceniu pliku mógłbym się do niego odnosić nie podając ścieżki. A próbowałem wrzucić wszędzie. Ostatecznie poprzestało na tym ze podaje dokładną ścieżkę do pliku.
Natomiast teraz jak programuje w Allegro i chcę skorzystać i pliku .bmp to nawet podanie dokładnej ścieżki nic nie daje.
Pytanie: czy jest jakieś miejsce w projekcie Xcode do którego sie wrzuca takie "zewnetrzne pliki"?

Kod z programu pisanego pod allegro:
	BITMAP *ludek = NULL; 
	ludek = load_bmp("ludek.bmp",default_palette);

---- Dodano 29-11-2008 o godzinie 20:01 ----
Naprawde nikt nic nie wie?? :( W każdym innym programie do programowania z jakim się spotkałem wystarczyło wrzucić plik do katalogu projektu. Czemu w Xcode to nie działa? :(

#2 genshi.wa

genshi.wa
  • 67 postów

Napisano 30 listopada 2008 - 12:45

Witam. Powinno ci normalnie pójść. Zobacz czy nazwy są takie same jak podajesz, dokładnie, wielkość liter itp. Spróbuj umieścić plik na próbę wykonywalny oraz bitmapę w jednym katalogu i uruchom to. (pamiętaj żeby było w Release) z kodem jakim podałeś. Druga sprawa sprawdź odczyt normalnego pliku tekstowego nie z allegro, czyli przez fstream. Zrób coś takiego:

#include 
#include 
#include 


int main(int argc, char *argv[])
{
	
	try {
		std::cout << "Zapis do pliku..." << std::endl;
		std::ofstream ofs("plik.txt");
		ofs << "Cosik do pliku" << std::endl;
	}
	catch(std::exception exc) {
		std::cout << exc.what() << std::endl;
	}
	
	try {
		std::cout << "Odczyt z pliku..." << std::endl;
		std::ifstream ifs("plik.txt");
		std::string str;
		std::getline(ifs, str);
		std::cout << "Zawartosc pliku: \"" << str << "\"" << std::endl;
	}
	catch(std::exception exc) {
		std::cout << exc.what() << std::endl;
	}
	
	
	return 0;
}



Jeśli to pójdzie to masz coś nie tak z allegro. Pozdrawiam.

#3 Brazol

Brazol
  • 174 postów
  • SkądStolica

Napisano 30 listopada 2008 - 20:11

Dzięki za odpowiedź.
Nazwy są dokładnie takie same. Jak umieściłem w tym samym katalogu i odpaliłem też nie zadziałało.
Kod który podałeś zadziałał i plik.txt utworzył się w folderze z plikiem wykonywalnym.

Zamieszczam cały kod mojego programu. Za każdym razem jak odpalam to wyskakuje "nie mogę załadować obrazka Ludek !". Może coś mam nie tak w programie.

#include < allegro.h >
int main() 
{ 
	allegro_init(); 
	install_keyboard(); 
	set_color_depth(16); 
	set_gfx_mode(GFX_AUTODETECT,640,480,0,0); 
	clear_to_color(screen, makecol(128,128,128)); 
	
	
	BITMAP *ludek = NULL; 
	ludek = load_bmp("ludek.bmp",default_palette); 
	if (!ludek) 
	{ 
		set_gfx_mode(GFX_TEXT,0,0,0,0); 
		allegro_message("nie mogę załadować obrazka Ludek !"); 
		allegro_exit(); 
		return 0; 
	} 
	
int ludek_x = 100, ludek_y = 100;
	while( !key[KEY_ESC]) 
	{ 
		if( key[KEY_LEFT]) ludek_x--; 
		if( key[KEY_RIGHT]) ludek_x++; 
		if( key[KEY_UP]) ludek_y--; 
		if( key[KEY_DOWN]) ludek_y++; 
		
		//clear_to_color(screen, makecol(10,10,10)); 
		//rest(1); 
		masked_blit( ludek, screen, 0,0, ludek_x, ludek_y, ludek->w, ludek->h); 
	} 
	destroy_bitmap(ludek); 
	allegro_exit(); 
	return 0; 
} 
END_OF_MAIN();


#4 Brazol

Brazol
  • 174 postów
  • SkądStolica

Napisano 05 grudnia 2008 - 17:58

Kurde, w czym może być problem? Już męczę się z tym kilka dni :). Na windzie działa więc kod jest ok. Ogólnie allegro na macu działa bo inne programy odpala. Jedynie nie widzi plików zewnętrznych.. prosze pomóżcie!!

Ps. Jak zamieścić na forum kod żeby mył kolorowy jak powyżej a nie jak mój ? :)

---- Dodano 05-12-2008 o godzinie 18:43 ----
ok... problem rozwiązany.. okazało się że jestem głupi :)

to co pisał sannindan: (pamiętaj żeby było w Release) to chyba chodziło oto żeby było w Resources, tak
w każdym razie, jak tam włożyłem to zadziałało...

#5 genshi.wa

genshi.wa
  • 67 postów

Napisano 06 grudnia 2008 - 02:44

Heh masz rację, zrobiłęm bład w słowie :) Przyznaje się bez bicia. Myślałem o Resources, a napisałem Release. To chyba dlatego, że przygotowywałem pewną część kursu już pod Cocoa :) Pozdrawiam.




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych