Задолбался я с ошибками. Решил просмотреть все видеорежимы с помощью программы:
Опять, с ошибками формирует список. Вручную откорректировал указатели на некоторые данные:Код:Program CGX_Test; uses exec, sysutils, utility, intuition,agraphics,cybergraphics; var execlist:PList; cybernode:PCyberModeNode; begin execlist:=AllocCModeListTagList(nil); if execlist <> nil then writeln('cyber'); cybernode:=PCyberModeNode(execlist^.lh_Head); while cybernode<>nil do begin writeln('Mode ',cybernode^.ModeText); writeln('Width ',cybernode^.Width); writeln('Height ',cybernode^.Height); writeln('Depth ',cybernode^.Depth); writeln(); cybernode:=PCyberModeNode(cybernode^.Node.ln_Succ); end; end.
Выводит видеорежимы правильно. Но другие данные побиты.Код:Program CGX_Test; uses exec, sysutils, utility, intuition,agraphics,cybergraphics; var execlist:PList; cybernode:PCyberModeNode; p:^Word; begin execlist:=AllocCModeListTagList(nil); if execlist <> nil then writeln('cyber'); cybernode:=PCyberModeNode(execlist^.lh_Head); while cybernode<>nil do begin writeln('Mode ',cybernode^.ModeText); p:=@cybernode^.Width; writeln('Width ',(p-1)^); // writeln('Width ',cybernode^.Width); p:=@cybernode^.Height; writeln('Height ',(p-1)^); //writeln('Height ',cybernode^.Height); p:=@cybernode^.Depth; writeln('Depth ',(p-1)^); //writeln('Depth ',cybernode^.Depth); writeln(); cybernode:=PCyberModeNode(cybernode^.Node.ln_Succ); end;
Зарегистрируюсь на форуме Фри Паскаля и опишу баги.
- - - Добавлено - - -
Незнаю, что делать. Написал на форум https://forum.lazarus.freepascal.org...c,64644.0.html




Ответить с цитированием