x-kom hosting

[Pascal] Coś nie tak z grafiką

trophy250
utworzono
utworzono

Witam mam mianowicie problem z grafiką w Pascalu jak napisze program

program prostokat;uses Graph, Crt;var tryb, karta : Integer;beginkarta:=0;tryb:=0;InitGraph(tryb, karta, 'C:\tp\Bgi');SetColor(4);Rectangle(100, 100, 500, 250);repeat until keypressed;CloseGraph; end.

jest wszystko dobrze w kodzie i dobrze podana ścieżka dostępu i mi wyskakuje taki ERROR << FILE NOT FOUND GRAPH.TPU> i nie wiem o co chodzi może wiecie jak ten problem naprawić ściezka do BGI jest poprawna na 100%

benkowik
komentarz
komentarz

Problem dość popularny, ale ja go nie miałem :P

Musisz w ustawieniach kompilatora dopisać ścieżkę do modułu graficznego. Drugim rozwiązaniem może być skopiowanie tego pliku GRAPH.TPU do katalogu gdzie masz program lub do podkatalogu BIN (plik ten znajduje się standardowo w "'C:\Program Files\TP\UNITS\GRAPH.tpu").

Z tego co czytałem, FreePascal nie ma z tym problemu :P

trophy250
komentarz
komentarz

Już wszystko jes ok. Dla mających ten sam problem to trzeba zrobic tak:

najpierw skopiowac plik graph.tpu do podkatalogu BIN (ścieżka 'C:\Program Files\TP\UNITS\GRAPH.tpu"). a potem

w kompilatorze options-->Directories i tam w UNIT directories wpisac prawidlową ściezkę do UNIT. POzdrawiam

luq
komentarz
komentarz

Nie wywala Ci żadnego błędu co do tego?

var tryb, karta : Integer;(...)InitGraph(tryb, karta, 'C:\tp\Bgi');

Jak ostatnio pisałem w Pascalu (pierwszy raz z graph :P) to miałem z taką konstrukcją problem, ponieważ z tego co wiem, funkcja

InitGraph()

przyjmuje jako 2 pierwsze parametry smallInt a nie integera.

Tyle, że ja pisałem pod Dev-Pascal`em, czeego Ty uzywasz nie wiem ;)

i taka druga sprawa

karta:=0;tryb:=0;

Raczej powinieneś odnosić się do stałych, np:

karta := VGA;tryb := VGAHi;

po to są one aby było jasno w kodzie widoczne taki tryb i jaki sterownik jest używany, po intach raczej tego nie widać.

benkowik
komentarz
komentarz

luq aż z ciekawości zobaczę jak to będzie szło na Trubo Pascalu. Ja z Mario gadałem i mu poszedł ten kod ze zmiennymi typu Integer; czyli żadnego błędu nie było (chyba :P )

M@RIO96, albo zamiast zmieniać w ustawieniach możesz wprowadzić małą zmianę w kodzie programu na:

initgraph(d,m,'c:\tp\Bgi\units')
  • 3 tygodnie później...
mateusz8819
komentarz
komentarz

Witam

Jestem początkujący w programowaniu i miałem taki sam problem jak powyżej ale udało się go naprawić, ale pojawił sie następny w momencie kiedy uruchamiam napisany program, pascal się wyłącza. prosze o pomoc.

benkowik
komentarz
komentarz

Podaj kod do programu (najlepiej cały)

mateusz8819
komentarz
komentarz

porgram ma za zadanie wyświetlić poruszajace sie kolo.

Program p074;uses Crt,Graph;var Karta,Tryb : Integer;X,Y,A,B : Integerbegin  Randomize;Detectgraph(Karta,Tryb);Initgraph(Karta,Tryb,'c:\bp\bgi');X:=Random (getMaxX-100)+50;Y:=Random (getMaxY-100)+50;A:=1;B:=1;  repeat  SetColor(yellow);  Circle (X,Y,10);  Delay(5);  SetColor(Black);  Circle(X,Y,10);  Inc(X,A);  Inc(Y,B);  if (x<10) or (x>GetmaxX-10) then A:=-A;  if (Y<10) or (y>GetmaxY-10) then B:=-B; until KeyPressed;CloseGraph;end.

Program sie skompilował. ale nie chce uruchomić.

// dodaje code! Ludzie czytać regulamin działu!

// luq

benkowik
komentarz
komentarz
Initgraph(Karta,Tryb,'c:bp\bgi');

Tutaj jest zły adres.

Wstaw ukośnik tak jak tutaj:

Initgraph(Karta,Tryb,'c:\bp\bgi');
mateusz8819
komentarz
komentarz
Initgraph(Karta,Tryb,'c:bp\bgi');

Tutaj jest zły adres.

Wstaw ukośnik tak jak tutaj:

Initgraph(Karta,Tryb,'c:\bp\bgi');

Sorry, to tylko błąd w przepisywaniu tutaj do forum. W programie mam napisane dobrze. Może lepiej zobrazuje problem: po próbie uruchomienia programu pokazuje się na około 1s czarny ekran, następnie wraca do pulpitu, z tymże Pascal jest już wyłączony(Używam Borland Pascal 7.0).

rafalluz
komentarz
komentarz

Przypominam sobie podobny problem niegdyś. U mnie należało wgrać do folderu z programem podany plik i dodać w źródle procedurę:

http://student.agh.edu.pl/~rafalluz/projects/EGAVGA.OBJ

procedure EGAVGADriver;external;{$L EGAVGA.obj}
mateusz8819
komentarz
komentarz
procedure EGAVGADriver;external;{$L EGAVGA.obj}

Mam to wpisać tutaj?

Program p074;uses Crt,Graph;procedure EGAVGADriver;external;var Karta,Tryb : Integer;X,Y,A,B : Integer

Jeśli tak to następnie kompilator pokazuje mi błąd Error46: Undefined external (EGAVGADriver).

O co w tym chodzi?

rafalluz
komentarz
komentarz

Nie, to jest procedura, więc po varach (zmiennych). {$L} to dyrektywa kompilatora, by dołączył obiekt zewnętrzny.

mateusz8819
komentarz
komentarz

Dzięki za pomoc, ale nadal jest tak jak było tzn. błąd już nie wyskakuje,ale nadal po uruchomieniu pokazuje się czarny ekran, a potem Pascal się wyłącza.

benkowik
komentarz
komentarz

A ten kod pisałeś samemu czy skądś go wziąłeś ?

rafalluz dobrze kombinuje bo przy używaniu grafiki wykorzystuje wszystko z folderu BGI a szczególnie EGAVGA.

Może spróbuj wstawić to w procedurę i przy używaniu to wywołaj rysowanie.

Ewentualnie możesz popróbować coś z tym kodem:

program kolo;usescrt,graph;varster,tryb:integer;beginster:=vga;tryb:=vgahi;initgraph(ster,tryb,'c:\bg\bgi');setcolor(4);setfillstyle(1,4);circle(320,240,20);floodfill(320,240,4);readkey;end.
mateusz8819
komentarz
komentarz
A ten kod pisałeś samemu czy skądś go wziąłeś ?

rafalluz dobrze kombinuje bo przy używaniu grafiki wykorzystuje wszystko z folderu BGI a szczególnie EGAVGA.

Może spróbuj wstawić to w procedurę i przy używaniu to wywołaj rysowanie.

Ewentualnie możesz popróbować coś z tym kodem:

program kolo;usescrt,graph;varster,tryb:integer;beginster:=vga;tryb:=vgahi;initgraph(ster,tryb,'c:\bg\bgi');setcolor(4);setfillstyle(1,4);circle(320,240,20);floodfill(320,240,4);readkey;end.

Po napisaniu twoje programu wyskakuje mi komunikat ffff.bmp

Korzystam z turbo Pascal twój pierwszy program - Karol Wierzchołowski http://komputeks.pl/product_info.php/products_id/1953

ffff.bmp

benkowik
komentarz
komentarz

Hmm to dziwne bo mi działa.

Napisz dokładnie jaki efekt chcesz uzyskać, ja spróbuje zrobić po swojemu.

rafalluz
komentarz
komentarz

A spróbuj uruchomić ten program w Dosboxie.

http://www.dosbox.com/download.php?main=1

mateusz8819
komentarz
komentarz

Chcę zobaczyć efekt napisanego programu tylko się nie włącza. efekt końcowy to poruszające się koło które ma się odbijać od boków monitora.

rafalluz
komentarz
komentarz

Napisałem wyżej. Możliwe, że to problem z kompatybilnością z Windowsem. Uruchom ten program pod Dosboxem, by ew. wykluczyć tą możliwość.

mateusz8819
komentarz
komentarz
Napisałem wyżej. Możliwe, że to problem z kompatybilnością z Windowsem. Uruchom ten program pod Dosboxem, by ew. wykluczyć tą możliwość.

Nie mogę tego tam uruchomić.

rafalluz
komentarz
komentarz

Tzn? Odpal, montujesz partycję, na której masz program, poleceniem np.

mount C: C:

nawigacja i uruchamianie tak samo, jak w dosie (w sumie IIRC możesz dać

mount C:\folder\program C:

, by było mniej przechodzenia).

Jak nie zadziała, to jest opcja, że masz gdzieś buga.

mateusz8819
komentarz
komentarz

Niestety nie chodzi!!! Byłem z tym programem u kolegi i u niego wszystko śmiga.

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.