IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Срочно, доступ к элементам массива, безразмерные массивы
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Разбираю исходник клавиатурного модуля - без клавы висит написание нужной и полезной проги. 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 и наоборот?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Можно ли вообще использовать в ФПЦ безразмерные массивы.
Ну, вообще-то
Type
PBoolArray = Array Of ByteBool;

и, соответственно, SetLength, вроде никто не отменял...

Цитата
возникла проблема: как значение элемента массива типа PBoolArray записать в переменную типа BYTE и наоборот?
TypeCast... Что-то в таком вот духе:

Type
PBoolArray = ^BoolArray;
BoolArray = Array[0..4000] of ByteBool;

var
pa: PBoolArray;
b: byte;

begin
pa := new(PBoolArray);

b := 1;
pa^[10] := bytebool(b);

b := byte(pa^[10]);
end.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 20.09.2017 10:48
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"