SDL + Lazarus: ошибка

Модератор: Модераторы

Ответить
algor
новенький
Сообщения: 11
Зарегистрирован: 24.11.2008 16:36:14

SDL + Lazarus: ошибка

Сообщение algor »

Начал изучать SDL по этим урокам. Т.к. в них используется C++, приходится заниматься переводом =)
Заодно использую http://jedi-sdl.pascalgamedevelopment.com/docs.php#Docs.
Так вот.
Компилятор почему-то ругается на строчку

Код: Выделить всё

while (SDL_PollEvent(&event)>0) do
. Говорит, invalid integer expression. Объявление event:

Код: Выделить всё

event  : TSDL_Event;

Если заменить & на @ эту строчку он проходит, но ругается на строчки

Код: Выделить всё

      if event.type_=SDL_QUIT then done:=1 else
      if event.type_=SDL_KEYDOWN then ...

Error: Incompatible types: got "untyped" expected "LongWord".

На всякий случай весь код:

Код: Выделить всё

program prgr;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, sdl
  { you can add units after this };
var screen : PSDL_Surface;
    done   : integer;
    event  : TSDL_Event;

begin
  if (SDL_Init(SDL_INIT_VIDEO or SDL_INIT_VIDEO)<0) then
  begin
    Writeln('Ошибка при инициализации SDL! Код: ',SDL_GetError());
    readln;
    halt(1);
  end;

  screen := SDL_SetVideoMode(1024,768,32,SDL_HWSURFACE or SDL_DOUBLEBUF);
  if (screen=nil) then
  begin
    writeln('Ошибка при инициализации экрана! Код: ',SDL_GetError());
    readln;
    halt(1);
  end;

  done:=0;
  while (done=0) do
  begin
    while (SDL_PollEvent(@event)>0) do
    begin
      if event.type_=SDL_QUIT then done:=1 else
      if event.type_=SDL_KEYDOWN then           
          if event.key.keysym.sym=SDLK_ESCAPE then done:=1;
    end;

  end;

  SDL_Quit();
end.


Добавлено спустя 3 минуты 22 секунды:
Что-то я ступил... Сразу надо было @ ставить. Мозги не работают окончательно =) Остаётся только второй вопрос. Про if'ы.
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

Не SDL_QUIT а SDL_QUITEV :wink:
SDL_QUIT - это функция, а тебе нужна константа, обозначающая событие...
Ответить