Paskal - Polygon – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Paskal - Polygon – Pascal – Fórum – Programujte.comPaskal - Polygon – Pascal – Fórum – Programujte.com

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Pergoly a střechy Brno

doma22
~ Anonymní uživatel
94 příspěvků
7. 2. 2021   #1
-
0
-

Je tu ešte jedná vec, ktorá ma zaujala z linku, čo ste mi dali na grafiku. V tomto materiále je príklad na polygon. Problém však pri prepise mám v tom, že ak ho prepíšem do paskalu, tak ak tam nechám readln, tak grafické okno nakreslí iba polovicu a nevyšrafuje pozadie, okrem toho grafické okno sa tvárí ako keby tam žiadne readln neboli, grafické okno po stlačení enteru  nezavrie a ani nespustí po stlačení enteru šrafovanie. No keď odstránim všetky readln, tak program spustí grafické okno, ale nečaká na enter, nakreslí, vyšrafuje a zavrie okno bez enteru. Keď zas prepíšem zdrojový kód do Lazarusa, tak zdrojový kód nechce skompilovať s hláškou,  že má problém s fondom integer.

program Polygon;

{$mode objfpc}{$H+}

 uses  Graph;

 const N      =  8;                    { počet vrcholov polygonu       }
       Obrys  = 15;                    { farva obrysu polygonu         }

 var   Gd, Gm : Integer;               { grafický driver a mód         }
       Seznam : array [0..N - 1] of    { zoznam suradníc vrcholov pol. }
                 record
                  X, Y : Integer
                 end;
       I      : 0..N;                  { index vrcholu                 }

begin { program }
 Gd := 9; Gm := 2;                     { 640 x 480 VGA                 }
 InitGraph(Gd, Gm, '');                { inicializácia grafiky         }
 for I := 0 to N - 1 do                { naplnenie zoznamu souradnicami}
  with Seznam[I] do                    { vrcholov polygonu             }
   begin
    X := 40 + I * 80;
    if Odd(I) then Y := 100            { "cik-cak"                     }
              else Y := 380
   end;
 SetColor(Obrys);                      { farva čiar                    }
 SetFillStyle(8, 14);                  { štýl výplne polygonu          }
 FillPoly(N, Seznam);                  { krezba polygonu               }
 Readln;                               { čakanie na stlačenie klávesy ENTER }
 SetFillStyle(11, 6);                  { štýl výplne okolia polygonu   }
 FloodFill(280, 300, Obrys);           { vyplnenia okolia boduov [280,300] }
 Readln;                               { čakanie na stlačenie klávesy ENTER }
 CloseGraph                            { poriadok a obnovenie textového m. }
end. { program }
                   
Nahlásit jako SPAM
IP: 178.143.117.–
gna
~ Anonymní uživatel
1419 příspěvků
7. 2. 2021   #2
-
0
-

Nevím, ale tipl bych, že ten program běží v konzoli, ze které readln čte a Graph vytváří nové grafické okno, které je aktivní. Takže přepni zpátky do konzole.

Ten problém s integerem je v tom, že parametry InitGraph jsou typu smallint, což bývalo to samé jako integer, ale ve FPC to nemusí platit. Na zkoušení starých programů pro TP můžeš použít {$mode tp}.

Nahlásit jako SPAM
IP: 213.211.51.–
doma22
~ Anonymní uživatel
94 příspěvků
7. 2. 2021   #3
-
0
-

#2 gna
Čiže vlastne musím použiť to, čo mi chýbalo pri programe zo včera Uholnik?

Nahlásit jako SPAM
IP: 178.143.117.–
gna
~ Anonymní uživatel
1419 příspěvků
7. 2. 2021   #4
-
0
-

Včera u Úhelníku jsi měl proceduru a prázdný program. Tady ti nefunguje jen readln a snad vidíš, že ten program je kompletní.

Já jsem napsal, že pokud to ve Windows funguje jako u mně, tak je problém jen v tom, že ten Enter mačkáš ve špatném okně.

Připojen obrázek.

Nahlásit jako SPAM
IP: 213.211.51.–
doma22
~ Anonymní uživatel
94 příspěvků
7. 2. 2021   #5
-
0
-

#4 gna
Aha, ďakujem za vysvetlenie, ale ako potom mám dosiahnuť, aby si program uvedomil, že tie readln majú fungovať v aktívnom okne ( okrem posledného ak by som tam pridal riadok, že pre ukončenie programu stlačte enter ), teda v tom grafickom a prečo pri prvom podnete s grafikou, kde sme riešili vyplnený kruh, program readln uplatňoval pre grafické okno, teda pre to aktívne, ktoré nakreslilo vyplnený kruh?

Nahlásit jako SPAM
IP: 178.143.117.–
doma22
~ Anonymní uživatel
94 příspěvků
7. 2. 2021   #6
-
0
-

#4 gna
Ale je pravda, že pri tom podnete s grafikou som použil iba jednoduchý zápis, môže to byť i tým?

 begin
  ovladac := Detect;
  InitGraph(ovladac, grafmod, 'C:\OVLADACE');
  readln;
  CloseGraph;
 end;
Nahlásit jako SPAM
IP: 178.143.117.–
doma22
~ Anonymní uživatel
94 příspěvků
7. 2. 2021   #7
-
0
-

#4 gna
A diky za dovysvetlenie toho uholníka, takže som to pochopil správne ako som písal, že program bol prázdny a mal som tam iba procedúru, teda že som urobil krok A už nie krok B. Mal som také podozrenie, ale chcel som si to overiť u profikov a v tom linku o grafike som asi nepochopil, že to nebol príklad celého programu, iba procedúry, takže diky, teraz len keď by ste mi pomohli s tými readlnami, aby program pochopil, kde ktorý readln patrí. Predpokladám, že pri uholníku bude ten istý problém, preto asi tiež to close nezatvára aktívne okno, teda to grafické

Nahlásit jako SPAM
IP: 178.143.117.–
gna
~ Anonymní uživatel
1419 příspěvků
7. 2. 2021   #8
-
0
-

Prostě klikni na to konzolové okno a zmáčkni ten enter.

Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1419 příspěvků
7. 2. 2021   #9
-
0
-

Tak to vypadá, že když použiješ wincrt (přídej do uses) místo crt, tak by to mohlo fungovat bez přepínání.

Nahlásit jako SPAM
IP: 213.211.51.–
doma22
~ Anonymní uživatel
94 příspěvků
7. 2. 2021   #10
-
0
-

#9 gna
Dobre skúsim to tam vpichnúť, no a to s tým stlačením okna sa mi zdá, že som to skúšal, ale priznám sa, že som skúšal už toľko vecí, že si nie som istý, či som to skúšal, možno nie, neviem, no určite vyskúšam všetky Vaše rady, ale dnes už kašlem na to, nechám si to na zajtra, diky za reakciu a pomoc

Nahlásit jako SPAM
IP: 178.143.117.–
gna
~ Anonymní uživatel
1419 příspěvků
7. 2. 2021   #11
-
0
-

tak ještě jinak. wincrt neřeší readln, ale má readkey, který můžeš použít místo readln. to by mělo fungovat.

Nahlásit jako SPAM
IP: 213.211.51.–
doma22
~ Anonymní uživatel
94 příspěvků
8. 2. 2021   #12
-
0
-

#11 gna
Ďakujem za pomoc, v paskale readkey funguje, takže zdrojové kódy v paskale idú po tejto úprave ako majú, aj v Lazaruse táto úprava zabrala, hneď ako som integer nahradil SmallInt, LongInt nechcel prijať, ale SmallInt áno, takže ak som to pochopil správne v Lazaruse sa musí použiť SmallInt nie LongInt ani Integer?

Nahlásit jako SPAM
IP: 178.143.117.–
gna
~ Anonymní uživatel
1419 příspěvků
8. 2. 2021   #13
-
0
-

Parametry se předávájí hodnotou nebo odkazem (deklarované jako var). Při zápisu do parametrů předávaných odkazem se mění hodnota původní proměnné, proto je potřeba aby byla správného typu.

Integer může být SmallInt nebo LongInt v závislosti na režimu kompilace. Když je Integer alias pro SmallInt, tak to bude fungovat. To platilo v Turbo Pascalu pro DOS a proto jsem ti radil zkoušet ty staré programy ve FPC s uvedením {$mode tp}.

Jinak parametry InitGraph jsou SmallInt, takže čisté řešení je použít SmallInt.

Lazarus kompiluje pomocí FPC, takže nemůžeš říct ve FPC tak a v Lazaru jinak. Pořád je to ten samý FPC, jen se může lišit nastavení.

Nahlásit jako SPAM
IP: 213.211.51.–
doma22
~ Anonymní uživatel
94 příspěvků
8. 2. 2021   #14
-
0
-

#13 gna
Tak v FPC ( konkrétne 3 mám ), tak tam mám integer a paskal nerobí problémy, ale v Lazaruse ( konrétne 64 mám ), tak tam som ten integer musel zmeniť na smallint, inak by s tým Lazarus nepohol, ale chápem, že čo ste chceli povedať, že v princípe je to isté, respektíve, že základné princípy fungujú ako v Lazaruse, tak v Pakale. No a s tým Dosom som počítal, pre istotu mám aj DosBox, hlavne pre staré hry, tie sa mi zdajú krajšie, keďže tie nové sú dosť tmavé, povedal by som také pochmúrne, málo farebné a rozmazané 

Nahlásit jako SPAM
IP: 178.143.117.–
gna
~ Anonymní uživatel
1419 příspěvků
9. 2. 2021   #15
-
0
-

Lazarus kompiluje pomocí FPC, takže nemůžeš říct ve FPC tak a v Lazaru jinak. Pořád je to ten samý FPC, jen se může lišit nastavení.

Nahlásit jako SPAM
IP: 213.211.51.–
doma22
~ Anonymní uživatel
94 příspěvků
9. 2. 2021   #16
-
0
-

#15 gna
nie, nie, nepochopili sme sa, ja netvrdím, že FPC a Lazarus sú rozdielne veci, práve naopak. Hovorím, že princípy sú tam rovnaké, ale detajly nie ( teda ako hovoríte Vy, nastavenia, preto paskal integer áno, no Lazarus už SmallInteger ), teda aby som to povedal tak aby sme sa pochopili. Citroen a Fabia sú autá, fungujú tam rovnaké princípy ( motor, volant, späťaky, karoséria ..... ), ale v detajloch ( palubná doska, elektrotechnika, dizajn ......) sú iné, takže paušalne môžeme povedať, že sú to autá, no nemôžme povedať, že Fábia a Citroen je to isté a že všetko čo funguje v Fabii, bude fungovať i v Citroene a naopak.

Nahlásit jako SPAM
IP: 178.143.117.–
gna
~ Anonymní uživatel
1419 příspěvků
9. 2. 2021   #17
-
0
-

#16 doma22
Tady je ale jen jedno auto. A podle toho jestli zařadíš jedničku nebo zpátečku, tak ti jede dopředu nebo dozadu.

Nahlásit jako SPAM
IP: 213.211.51.–
doma22
~ Anonymní uživatel
94 příspěvků
9. 2. 2021   #18
-
0
-

#17 gna
Tak ono z fatalistického pohľadu je Fabia auto aj Citroen, a ako ste poznamenali obidva majú 1 a spiatočku, ono z fatalistického pohľadu by sme mohli povedať, že paskal a C je to isté auto, keďže v pc hocijaký príkaz je iba v  1 a 0, či je to C, či C++, či paskal, či Lazarus atď, ale i keď vždy zatiaľ ide o 1 a 0 je rozdiel programovať v C a v napríklad paskale, keďže tam pribudli nové nastavenia, nové funkcie atď., takže ja iba hovorím, že áno to teraz len tak strelím do luftu, 99,9% to čo funguje v iba paskale, tak to funguje i v Lazaruse, ale predsa je tu to 0,1% čo v paskale pôjde, no v Lazaruse nie, ako napríklad ten integer

Nahlásit jako SPAM
IP: 178.143.117.–
doma22
~ Anonymní uživatel
94 příspěvků
9. 2. 2021   #19
-
0
-

#17 gna
Aj preto som presvedčený, že angličtina nie je základnou podmienkou programovania, jednotka je jednotka v USA, Veľkej Británii, ale aj v Rusku, Číne, Afrike, Južnej Amerike, či Austrálii, primárnou podmienkou pri programovaní je angličtina podľa mňa preto, že zatiaľ, aspoň ja o tom neviem, nik nepoužil iný jazyk pri programovaní ako angličtinu, ale keďže pc pracuje s 1 a 0, nič tomu nebráni, aby sa použil i iný jazyk, no samozrejme, že ak nie je na trhu, tak sa inak ako v angličtine programovať nedá

Nahlásit jako SPAM
IP: 178.143.117.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

Intersects polygon — založil felix

Wings3D jeden polygon — založil cecilconrad

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý