Skocz do zawartości

Problem z modułem GRAPH


marvinex123

Polecane posty

Witam. Mam problem z moim programem w pascalu. Jest on jeszcze nieskończony, ale nie mogę brnąć dalej, dopóki nie pozbędę się jednego problemu. Otóż użyłem modułu graph, zrobiłem w nim tabele. Jest to w formie procedury. Sama tabela działa bez problemu. Oczywiście na końcu procedury jest podane CloseGraph które zamyka moduł graficzny. Wszystko byłoby okej, gdyby nie fakt, że po wyświetleniu tablicy w oknie graficznym siada całe okno tekstowe. Zaczyna wariować, przestaje wyświetlać prawidłowe wprowadzany tekst. Przyjmuje do siebie dane, ale nic nie wyświetla pomimo używania komend. Nawet komenda ClrScr nie działa po wyświetleniu tabeli, po prostu program wariuje. Nie mam pomysłu już jak to zrobic. Kod programu poniżej:

 

 

var p1,p2,x1,x2,y1,y2,r,k:integer;

var d:string;

var tab:array[1..15] of integer;

var sterownik,tryb:integer;

procedure tabela(p1,p2,x1,x2,y1,y2,r: integer);

begin

sterownik:=9; tryb:=0;

InitGraph(sterownik, tryb, 'D:\fpc\BGI');

r:=0;

x1:=1;

y1:=1;

x2:=1;

y2:=135;

repeat {linie pionowe}

begin

Line(x1,y1,x2,y2);

x1:=x1+80;

x2:=x2+80;

r:=r+1;

end;

until r=4;

 

p1:=20;

p2:=5;

 

OutTextXY(p1,p2, 'Numer');

p1:=p1+80;

OutTextXY(p1,p2, 'Danie');

p1:=p1+80;

OutTextXY(p1,p2, 'Cena');

x1:=1;

y1:=1;

x2:=240;

y2:=1;

r:=0;

repeat {linie poziome}

begin

Line(x1,y1,x2,y2);

y1:=y1+15;

y2:=y2+15;

r:=r+1;

end;

until r=10;

p1:=10;

p2:=20;

OutTextXY(p1,p2,'1.');

p1:=p1+80;

OutTextXY(p1,p2,'Frytki');

p1:=p1+100;

OutTextXY(p1,p2,'4zl');

p1:=10;

p2:=35;

OutTextXY(p1,p2,'2.');

p1:=p1+80;

OutTextXY(p1,p2,'Kebab');

p1:=p1+100;

OutTextXY(p1,p2,'6zl');

p1:=10;

p2:=p2+15;

OutTextXY(p1,p2,'3.');

p1:=p1+80;

OutTextXY(p1,p2,'Cola');

p1:=p1+100;

OutTextXY(p1,p2,'3zl');

p1:=10;

p2:=p2+15;

OutTextXY(p1,p2,'4.');

p1:=p1+80;

OutTextXY(p1,p2,'Pizza');

p1:=p1+100;

OutTextXY(p1,p2,'25zl');

p1:=10;

p2:=p2+15;

OutTextXY(p1,p2,'5.');

p1:=p1+80;

OutTextXY(p1,p2,'HotDog');

p1:=p1+100;

OutTextXY(p1,p2,'4zl');

p1:=10;

p2:=p2+15;

OutTextXY(p1,p2,'6.');

p1:=p1+80;

OutTextXY(p1,p2,'Hamburger');

p1:=p1+100;

OutTextXY(p1,p2,'3zl');

p1:=10;

p2:=p2+15;

OutTextXY(p1,p2,'7.');

p1:=p1+80;

OutTextXY(p1,p2,'Salatka');

p1:=p1+100;

OutTextXY(p1,p2,'7zl');

p1:=10;

p2:=p2+15;

OutTextXY(p1,p2,'8.');

p1:=p1+80;

OutTextXY(p1,p2,'Zestaw');

p1:=p1+100;

OutTextXY(p1,p2,'15zl');

delay(2000);

CloseGraph;

end;

procedure test(d:string);

begin

ClrScr;

writeln('Witamy w naszym barze szybkiej obsugi !');

repeat

writeln('Czy wywietli† menu jeszcze raz ?');

readln(d);

if d='tak' then tabela(x1,y1,x2,y2,r,p1,p2);

until d='nie';

ClrScr;

test(d);

writeln('dzi©kujemy za skorzystanie z naszych usug');

readln();

end.

Link do komentarza
Udostępnij na innych stronach

Dzięki za odpowiedź. Niestety niewiele zrozumiałem o co chodzi z JCF [pobrałem program o tej nazwie, ale kompletnie nie wiem jak się w nim posługiwać]. Rozumiem że możecie mnie odesłać do wujka google, ale prosiłbym o przybliżenie mi tematu JCF jeżeli byłaby taka możliwość. Cóż człowiek uczy się całe życie, chętnie dowiem się czegoś nowego, a z tego co jest napisane w internecie o tym niewiele zrozumiałem

Link do komentarza
Udostępnij na innych stronach

@marvinex123: poprzednik miał na myśli to, że wkleiłeś kod w ogóle bez żadnych znaczników koloryzujących, a poza tym w ogóle nie sformatowany. Jeśli chcesz być branym na poważnie i uzyskać odpowiedzi musisz formatować kod. Jeśli nie umiez robić tego sam, masz gotowca http;//olesio.eu/jcf z tym że na tym forum niestety na ogół parser i tak rozwali formatowanie jakby go nie było. Dlatego najlepiej kod wkleić na zewnętrzny pastebin. Oczywiście po sformatowaniu. Wtedy ktoś może spojrzy i coś Tobie doradzi więcej.

Pozdrawiam: olesio

Link do komentarza
Udostępnij na innych stronach

  • 2 months later...

Witam!

Mam dokładnie ten sam problem co autor tematu: używam modułu graph, program rysuje co trzeba, ale po zamknięciu go zaczyna wariować tryb tekstowy. Przepisałem nawet kropka w kropkę przykładowy program z tego poradnika: http://zelota.netsho.../50_grafika.pdf ale nie działa:

 

program graffika;

uses crt, graph;

var
i,j,k,x,y:integer;
sterownik, tryb:integer;

begin
   	clrscr;
   	writeln('Witaj'); //to dodałem od siebie
   	sterownik:=detect;
   	tryb:=detect; //to też
   	initgraph (sterownik, tryb, 'C:\Program Files\TP70\BGI');
   	x:=GetmaxX;
   	y:=GetmaxY;
   	CloseGraph;
   	writeln ('wspolrzedna x ekranu wynosi ',x);
   	writeln ('wspolrzedna y ekranu wynosi ',y);
   	readln;
end.

 

Program nic nie wypisuje na ekran. Co jest nie tak?

Mam jeszcze jedno pytanie: jaki adres mam wpisać w procedurę intgraph? U mnie folder BGI znajduje się pod adresem C:\Program Files\TP70\BGI, ale co bym nie wpisał, to program się kompiluje, i tak nie działa poprawnie, ale się kompiluje.

Link do komentarza
Udostępnij na innych stronach

Chciałem sprawdzić, czy program będzie mi prawidłowo działał na nowszym komputerze, na którym mam windows 8, ale gdzie tam! Nawet się nie chce skompilować, wyświetla mi komunikat, że nie może znaleźć modułu graph, mimo że on jest w folderach free pascala. I co ja mam robić?

 

Edit: podałem kompilatorowi ścieżkę do modułu i teraz się kompiluje, ale w dalszym ciągu wariuje mi tryb tekstowy.

Link do komentarza
Udostępnij na innych stronach

BGI nie jest wspierane... bynajmniej nie znam już osób które tego używają.

Zainteresuj się OpenGL pozwoli Ci to w przyszłości projektować więkzze projekty.

Widziałem nawet na 4p Ci nie pomogli.

;( Muszę zmienić świat FPC. ;)

 

Http://sulaco.co.za/ kurs eng. Opengl Delphi. Sciągaj źródła i przeglądaj a się nauczysz.

 

Nie rezygnuj !!! FPC Jest fajny.

 

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

Nie rezygnuj !!! FPC Jest fajny.

Właśnie to mnie zastanawia. FPC wygląda beznadziejnie, takie okienko DOSowe, ale w internecie jest bardzo wiele osób, które o ile nie piszą "pascal to martwy język", "lepiej uczyć się c" twierdzą, że FPC to bardzo dobry kompilator. Możesz mi tak mniej więcej wytłumaczyć dlaczego?

 

A rezygnować póki co nie zamierzam :) Programowanie to zajebiste hobby, a pascal w ogólności i FPC w szczególności bardzo mi się podobają. Pascal w przeciwieństwie do c jest bardzo logiczny, przynajmniej na tym poziomie na którym jestem.

 

Co do OpenGL to dzięki za radę, jak będę miał chwilę czasu to obejrzę.

Link do komentarza
Udostępnij na innych stronach

1. Używaj edytora z kolorowaniem składni (notepad++, Geany)

2. Twórz pliki make.bat z zawartością

fpc zrodlo.pas -MObjFPC
pause
zrodlo.exe
pause

Tak przygotowany plik uruchamiaj po skończeniu kodowania (Możesz Edytory sobie ustawić by przy np. klawiszu F9 wykonywały plik "Make.bat")

 

3. FPC jest prosty... ale nie jest ideałem.

Generowany kod do idealnych nie należy, przez co szybkością jest troszkę wolniejszy od C/C++ (myślę o GNU C/C++ bo wiadomo szybkość od kompilatora zależy nie od języka.). Natomiast ma tą swoją magię.

4. Wiele prób maiłem by zapomnieć o Pascalu i nadal wracam :) Ba nawet mam wielkie nadzieje związane z językiem (nie kompilatorem).

5. FPC jeest przenośny podobnie jak GNU C/C++

Generuje w miarę małe pliki wykonywalne, obsługuję składnię Turbo Pascala, Object Pascal, Delphi.

Minusem jest jednak mała ilość źródeł z procedurami/funkcjami do różnych bibliotek(DLL, *.so)

6. Jeżeli jesteś młody i masz zamiar być programistą w przyszłości polecam używania Pascala jako hobby dla przyjemności... a c/c++ dla sukcesu finansowego (Choć wielu mimo dobrej znajomości C/C++ sukcesu nie osiągają). Lub jak Ja skupić się pogłębianiu tego języka, udoskonalaniu i promowaniu w miarę własnych chęci.

7. Sciągnij Delphi 7 i pisz aplikacje pod Windows API / Console lub wykorzystuj metodę z pkt. 2.

8. Mnie fascynuje pisanie kompilatorów/translatorów/interpreterów

I obecnie nad tym siedzę. Wszystko piszę w FPC procedularnie. Innym kompilatorem na mym komputerze jest nasm i GNU C (podglądam wygenerowany kod maszynowy).

 

Co kto lubi, co się komu podoba.

Nie składnia języka jest ograniczeniem, a umiejętności programisty.

Pascala rozwijał nawet APPLE

Nie wiem co Ci pisać, po prostu lubię ten język :) Inne są męką dla mych oczu.

Pozdr.

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

Http://sulaco.co.za/ kurs eng. Opengl Delphi. Sciągaj źródła i przeglądaj a się nauczysz.
Z tego co pamiętam twórca Sulaco niestety już nie aktualizuje treści (nie żyje). Daty też tam są 2006. Przecież OGL dawno już zapomniał o rzeczach, które tam są opisywane :P

Ot taka mini-strona moja po godzinach :)http://www.wnetrzekuchni.pl

Link do komentarza
Udostępnij na innych stronach

1. Używaj edytora z kolorowaniem składni (notepad++, Geany)

2. Twórz pliki make.bat z zawartością

fpc zrodlo.pas -MObjFPC
pause
zrodlo.exe
pause

Tak przygotowany plik uruchamiaj po skończeniu kodowania (Możesz Edytory sobie ustawić by przy np. klawiszu F9 wykonywały plik "Make.bat")

Ściągnąłem sobie notepad++, fajnie się w nim pisze.

 

8. Mnie fascynuje pisanie kompilatorów/translatorów/interpreterów

I obecnie nad tym siedzę. Wszystko piszę w FPC procedularnie.

W takim razie możliwe, że korzystałem kiedyś z Twojego kompilatora - jak się uczyłem fortrana ściągnąłem kompilator chyba pascala/c/fortrana, który autor napisał, z tego co pamiętam, w pascalu :)

 

Chyba znalazłem coś dla siebie: bibliotekę allegro.pas pod Free Pascala. Znalazłem nawet wykład w pliku pdf z jej opisem! Autor pisze w nim tak:

Na stronie projektu Allegro.pas mozna znalezc moduł w wersji skompilowanej dla systemów rodziny Windows lub w postaci zródłowej. Obie wersje zawieraja takze skompilowana dla tego systemu wersje biblioteki Allegro. W przypadku wersji z kodem zródłowym, po rozpakowaniu pobranego archiwum nalezy uruchomic plik fix.bat z argumentem wywołania win32
Czy możecie mi wytłumaczyć o co chodzi z tym parametrem? :D Na stronie allegro.pas przeczytałem że najnowsza wersja jest kompatybilna z wersjami allegro zaczynającymi się od numeru 4.4, a więc ściągnąłem allegro 4.4.2, umieściłem w folderze z modułami FPC, ściągnąłem allegro.pas umieściłem w tym samym folderze, kompilator ma do nich adres, dodaję moduł za pomocą komendy uses, ale program nie chce mi się skompilować: wyświetla komunikat can't find unit allegro. Co robię nie tak?
Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Udało mi się wreszcie zainstalować allegro. Jest zajebiste! Napiszę co zrobiłem krok po kroku, to może komuś się przyda :)

0. Korzystam z Windowsa XP i FPC w wersji 2.6.2

1. Sciągnąłem bibliotekę allegro w wersji 4.4.2 i rozpakowałem w folderze FPC z innymi modułami (w moim wypadku jest to i386-win32, który z kolei znajduje się folderze units.).

2. Sciągnąłem najnowszą wersję allegro.pas (4.4.4) ze strony ich projektu i umieściłem w dowolny miejscu (konkretnie na dysku D).

3. Uruchomiłem konsolę cmd i wszedłem do folderu z allegro.pas i uruchomiłem plik fix.bat:

d:

cd allegro.pas

fix.bat win32

Wyświetlił mi się komunikat

Done!

Na stronie z projektem allegro.pas piszą aby w tym momencie "type make and press intro". Nie wiem co to znaczy, ani jak można "wcisnąć intro" (ktoś wie?). Gdy to zrobiłem wyskoczyło mi 7 błędów...

4. Utworzyłem folder o nazwie allegro.pas w katalogu z modułami FPC.

5. Przekopiowałem zawartość podkatalogu "lib" z allegro.pas na dysku D do katalogu z punktu 4.

6. Ścieżkę do modułu miałem w kompilatorze podaną już wcześniej.

7. Dodałem moduł allegro za pomocą komendy uses allegro;

 

Po wykonaniu powyższych czynności program się skompilował, ale przy próbie wykonania wywaliło mi błąd, że brakuje pliku allleg44.dll i przeinstalowanie programu może pomóc. Dlatego skopiowałem plik alleg44.dll (był w podkatalogu lib) i wkleiłem go do folderu, w którym FPC tworzy pliki .exe. Wtedy allegro zadziałało.

 

EDIT: wypróbowałem allegro na windowsie 7. Instalacja przebiegła dokładnie tak jak powyżej, z tą różnicą, że tym razem zadziałało wpisanie

make
Link do komentarza
Udostępnij na innych stronach

Slyszalem o Lazarusie, wygląda pięknie, ale o dziwo wiele razy czytalem komentarze, że nie jest taki dobry na jaki wygląda. W przypadku FPC natomiast jest odwrotnie - wygląda beznadziejnie, ale bardzo wiele osób w internecie go chwali. Na razie piszę w notepadzie++ i kompiluję w FPC tak jak mi doradził spike i jest OK.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...