OpenGL Ćwiczenia - Helion

0

Witajcie:)

Kupiłem książkę Helionu OpenGL Ćwiczenia autorstwa W. Pokuty, no i mam następuący problem, mianowicie otwieram ćwiczenie z :

Cwiczenia\R04_00_Poczatek\Material.dpr

Próbuje kompilować i wyskakują mi błędy, błędy te wyskakują już w każdym następnym ćwiczeniu (w kolejnych ćw jest i więcej).

[Error]Unit1.pas(141):Left side cannot be assigned to

klikam dwukrotnie na ten komunikat i czepia się :

kat := kat + 1;

jest jeszcze jeden błąd :

[Fatal Error] Material.dpr(5): Could not compile used unit 'Unit1.pas'

Kody źródłowe pobrałem zgodnie z wskazówkami zawartymi w książce ze strony Helionu.
Czy jest to możliwe że jest w tych kodach jakiś błąd ?
Wydaje mi sie że to mało prawdopodobnei raczej coś z moim DELPHIM 7 (30 dniowa wersja Enterprise) (też od Helionu bo z książkom był Kompedium Programisty DELPHI 7 A. Boducha)

Czy zna ktoś rozwiązanie tego problemu ? jeśli tak to bardzo proszę o pomoc.

0

byćmoze kat to stała? pokaż deklarację tej zmiennej.

0

Procedure ...........
Var
i: integer;
const
kat: real = 0;
begin
....
....

To jest deklaracja tej nieszczęsnej zmiennej.... ale czy jest to możliwe że autor się pomylił ?

Doczytałem sie na początku książki że kody źródłowe były tworzone w DELPHI 3.0 (autor dopisał - ćwiczenia powinny być również zgodne z kolejnymi wersjami tego oprogramowania)
Moim zdaniem mogą być niezgodne...

0

Kąt jest zadeklarowany po słowie const czyli jest to stała a nie zmienna. Nie jestem, ale to nie jestem na sto procent pewien ale spróbuj zaznaczyć opcję Project->Project Options->Compiler->Assignable typed constants.

0

Spróbuj przenieść kat do zmiennych, np.

var
i:integer;
kat:real=0;

może to pomoże?

0
Odysseus napisał(a)

Kąt jest zadeklarowany po słowie const czyli jest to stała a nie zmienna. Nie jestem, ale to nie jestem na sto procent pewien ale spróbuj zaznaczyć opcję Project->Project Options->Compiler->Assignable typed constants.

Dzięki Odysseus

To jest genialne, pomogło jak na razie wszystko się kompiluje :) zobaczymy czy wszystkie przykłady ale to z czasem... :)

A tak jako początkujący programista zapytam... Dlaczego to pomogło, co było przyczyną tego błędu, chciałbym zrozumieć dlaczego program się sypał....

POZDRAWIAM

0

Autor książki użył dla ułatwienia const, bo lokalnym zmiennym nie można przypisywać w ten sposób wartości początkowych (globalnym można).

Powyższe ustawienie kompilatora pozwala stałe, którym podało się typ, traktować jak zmienne o wartości początkowej, a nie jako klasyczne stałe. W Delphi 3 o ile się nie mylę, ustawienie to było domyślnie włączone, później z tego zrezygnowano, ponieważ z punktu widzenia inżynierii oprogramowania, nie było to eleganckie rozwiązanie (bo stała z założenia nie powinna się zmieniać), ale widocznie ułatwiało kodowanie (choć mógł przecież ręcznie przypisać wartość na początku procedury).

0

Sorki za offtop, (dawno tu nie zaglądałem) ale uznałem że trzeba by nieco sprostować sprawę.

Deklaracja w procedurze/funkcji

const
 identyfikator:typ=wartosc;

to nie stała, tylko zmienna statyczna, która nie traci wartości po zwolnieniu pamięci przydzielonej dla funkcji. Podczas pierwszego wywołania procedury/funkcji jest inicjowana z określoną wartością.

1 użytkowników online, w tym zalogowanych: 0, gości: 1