Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pascal :PPPPPP
Forum PHP.pl > Inne > Hydepark
Seth
Czy moze ktos bawil sie w Pascalu w tryb SVGA256 ?
Nasz zacofany program uczelniany programowania w Pasacalu zmusil mnie do napisania programu z wykorzystaniem tylko graph tongue.gif i teraz mam pewien problem. Otoz inicjujac ten tryb jeszcze wczoraj wszystko dzialalo, a dzisiaj juz nie - mimo, ze nic nie zmienialem laugh.gif

Czesc kodu odpowiedzialna za inicjacje grafiki to:
Kod
PROGRAM GrDemo;

USES

  Crt,

  Graph;



VAR

  GraphDriver : integer; { Sterownik graficzny }

  GraphMode   : integer; { Tryb graficzny }

  Page: byte; { Numer strony graficznej }



{ Detekcja sterownika VGA256 }

FUNCTION DetectVGA256 : integer;

VAR

  DetectedDriver : integer;

  SuggestedMode  : integer;



BEGIN

  DetectGraph(DetectedDriver, SuggestedMode);



  IF (DetectedDriver = VGA) OR (DetectedDriver = MCGA) THEN

  BEGIN

    DetectVGA256 := 1; {640x480}

  END

  ELSE

  BEGIN

    DetectVGA256 := grError;

  END;

END;



{ Inicjajca trybu graficznego

  TODO: kontorla bledow }

PROCEDURE  Initialize;

VAR

  PathToDriver   : string;



BEGIN

  DirectVideo := False;

  PathToDriver := 'e:tpsvga';   { Sciezka do driverow graficznych }

  GraphDriver := InstallUserDriver('Svga256',@DetectVGA256);

  InitGraph(GraphDriver, GraphMode, PathToDriver);

  IF GraphResult <> grOK THEN

  BEGIN

    writeln('Error');

  END;

END;



{ Opoznienie }

PROCEDURE Pause;

BEGIN

  delay(100000);

  delay(100000);

  delay(100000);

  delay(100000);

END;



{ Zapobiega migotaniu obrazu }

PROCEDURE WaitRetrace; ASSEMBLER;

ASM

  mov dx,3DAh

  @@loop1: in al,dx; and  al,8; jnz @@loop1;

  @@loop2: in al,dx; and  al,8; jz @@loop2

END;



{ Przeskakiwanie po stronach }

PROCEDURE PageFlipping;

BEGIN

  IF Page = 1 THEN

  BEGIN

    SetVisualPage(0);

    SetActivePage(1);

    Page := 0;

  END

  ELSE

  BEGIN

    SetVisualPage(1);

    SetActivePage(0);

    Page := 1;

  END;



  ClearDevice;

  WaitRetrace;

  Pause;

END;



{ Glowna czesc programu }

BEGIN

  Initialize;



  outtextxy(10,10,'sdfsdf');



  repeat

  until keypressed;



  CloseGraph;

end.


Czy ktos moze mi powiedziec co do cholery jest nie tak !?
itsme
tyle razy mowilem i powiem jeszcze raz KOD prosze ogarniac znacznikami w tym przypadku [PASCAL]. Nie ma questionmark.gif no coz dlaczego jeszcze nie napisales questionmark.gif

===================
sorry za offtopic nie moglem sie powstrzymac
Seth
Aj... masz racje ciagle o tym zapominam. Ale komu potrzebne jest kolorwanie skladni, przeciez to taki zbytek luksusu... wszystko zaciemnia i nikt go nie uzywa.
scanner
Seth: myślę, że podpadasz pod: http://forum.php.pl/regulamin.php#IV.2.d
Wywala jakieś błędy czy coś?

Kurde, z Pascalem ostatni raz miałem do czynienia coś z 7 lat temu a i tak mój "nauczyciel" nie wychodził poza tryb tekstowy...
Seth
Wlasnie chodzi o to, ze nie wywala zadnego bledu.
Po odpaleniu tego pojawia mi sie tryb 640x480 ale za chiny nie mozna nic wypisyca na ekranie. Przyczym czasami zdaza sie, ze wyskakuje blad... Matrixa tongue.gif (zart)... blad ochroy pamieci w windowsie i caly pascal siada.
Najciekawsze jest to, ze jak juz wyzej wspomnialem nie zmienialem nic w kodzie a sam z sibie sie sypnal.
Jezeli ktos chce to moge udostepnic pascala i ten kod wraz z vga256.bgi. Ja juz rece zalamalem sad.gif

_____________________________


VICTORY smile.gif

Oto poprawny kod:
Kod
PROGRAM GrDemo;



Uses

  Graph,

  Crt,

  Dos;



{$i svga16.inc}

{$i svga256.inc}

{$i svga32k.inc}



VAR

  GraphMode   : integer;

  GraphDriver : integer;

  Ky : Char;

  Drv : Integer;



{$F+}

FUNCTION DetectVGA256 : Integer;

BEGIN

  DetectVGA256 := 1; {640X480}

END;

{$F-}



BEGIN

  GraphDriver := InstallUserDriver('SVGA256',@DetectVGA256);

  GraphDriver := Detect;

  InitGraph(GraphDriver,GraphMode,'');

  setcolor(15);

  line(0,0,GetMaxX,GetMaxY);

  line(0,GetMaxY,GetMaxX,0);

  Ky := ReadKey;

  CloseGraph;

END.


itsme: Niestety kolorowanie skladni Pascala na forum strasznie spowalnia proces ladowania strony, wiec uzylem zwyklego, wysluzonego [code]
Seth
Jako, ze juz skonczylem projekt, wiec podziele sie z wami moim dzieckiem winksmiley.jpg
Tutaj mozna sciagnac plik exe (pisane pod dos'a): http://rallylinks.w.interia.pl/grdemo.zip
Plik trzeba rozpakowac w jakies 'latwo' dostepne dla dosa miejsce. Najlepiej na c:grdemo. Po odpaleniu programu nalezy podac sciezka gdzie rozpakowalismy pliki i dodac drvs (czyl w naszym przypadku: c:grdemodrvs). Milego ogladania smile.gif


Czekam na ocene smile.gif
scanner
działa, działa - napis sobie miga, tylko czemu tamm nie ma opcji "wyjdz"?
Seth
Te napis kiedys przestanie migac winksmiley.jpg
Po pewnym czasie przestaje i sa kolejne etapy dema... trzeba tylko poczekac. Na koncu sa takie ladne kolorki i wtedy juz mozna wcisnac klawisz (dowolny) aby wyjsc no i jeszcze podczas kodu Matrix.

Tylko jeszcze obawiam sie, ze delay moze byc za duzy na starsze komputery. Ja testowalem to na P4 2GHz, wiec dalem dosc duzy - jaby bylo duze spowolnienie to napiszcie zmienie w prgramie co trzeba i kazdy bedzie mogl sam ustawic.
scanner
no dobra.. ale w robocie poczekac raczej nie mogę - obejrze w domu.

P.S.
MOże przyspieszyć o połowe miganie?
Seth
Juz uaktualnilem wersje - teraz samemu mozna wybrac sobie opoznienie.
scanner
Podaję:

c:grdemodrvs
0,01 (oraz 0.01)

i się wyłacza bez powodu.
Seth
Podaj 1000 czy cos kolo tego - to jest wartosc opoznienia delay'a w pascalu mozna dac tylko do 10000 (mogly mi sie pomylic zera ale tak jest w przyblizeniu), wiec aby jeszcze dodatkowo zwolnic wstawilem to w petle (stad ta druga liczba) - dlatego tu najlepiej podawac przy wolnych komputerach 1. CZyli, jezeli damy delay na: 100 a druga wartosc na 2 to bedziemy mieli 200 itd.

Piewsza wartosc jest podawana w milisekundach z przedzialu <0,10000> druga to unsigned integer.
scanner
no to napisz, ze to przedzial, bo jak widze; podaj opoznienie 0,costam, to mysle, ze to jest wartosc domyslna...
Seth
ale sie czepiasz tongue.gif
scanner
no nie powiem, działa i to nawet dobrze smile.gif

P.S. - zawsze się czegoś czepnę. Już taka moja wredna natura tongue.gif))
DeyV
NO NO NO bardzo ładnie aaevil.gif I to w Pascalu...
Kiedy ja to widziałem po raz ostatni?
Z 2- 3 lata temu? Historia... winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.