Форум «Всё о Паскале» _ Free Pascal, Pascal ABC и другие _ Срочно, доступ к элементам массива, безразмерные массивы
Автор: SKVOZNJAK 27.06.2006 13:53
Разбираю исходник клавиатурного модуля - без клавы висит написание нужной и полезной проги. CRT не устраивает по причине сканирования клавы в другом окне. Не в том в котором нужно. Имеем фагденты кода:
Код
Type PBoolArray = ^BoolArray; BoolArray = Array[0..4000] of ByteBool;
{ Get a snapshot of the current state of the keyboard. Returns an array of keystates, indexed by the SDLK_ syms. Used: keystate: PBoolArray;
keystate := SDL_GetKeyState(nil); if keystate[SDLK_RETURN] then ... <RETURN> is pressed } function SDL_GetKeyState(var numkeys:longint):PBoolArray;cdecl;
В оригинале массив имел длину[0..0], но прежде массивы локальных переменных с такой длиной глючили при выполнении проги. Посему увеличил длину с запасом. Можно ли вообще использовать в ФПЦ безразмерные массивы. Переменная numkeys всё время возращает одно и то же число, предположительно номер элемента массива или его полезную длину. Но возникла проблема: как значение элемента массива типа PBoolArray записать в переменную типа BYTE и наоборот?
Автор: volvo 27.06.2006 14:15
Цитата
Можно ли вообще использовать в ФПЦ безразмерные массивы.
Ну, вообще-то
Type PBoolArray = Array Of ByteBool;
и, соответственно, SetLength, вроде никто не отменял...
Цитата
возникла проблема: как значение элемента массива типа PBoolArray записать в переменную типа BYTE и наоборот?
TypeCast... Что-то в таком вот духе:
Type PBoolArray = ^BoolArray; BoolArray = Array[0..4000] of ByteBool;