Задолбался я с ошибками. Решил просмотреть все видеорежимы с помощью программы:
Код:
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