![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго всем дня! Помогите с такой проблемой. Я сам новичок, дельфи изучаю совсем недолго. Понимаю что мой вопрос туп и лучшее что мне можно было бы ответить "почитай книжку". Согласен на 100%, читаю и учусь. Но так получилось, что немного забежал вперед и очень хочу сделать то, что не совсем понимаю. Поэтому прошу вашей помощи.
Есть структура в формате packed record: Код:
TSharedMem = packed record // обьявили структуру типа record version:word; flags :word; MemSize:integer; handle :THandle; NumTemps:word; NumFans :word; NumVolts:word; temps:array[0..31] of integer; fans :array[0..31] of integer; volts:array[0..31] of integer; end; Создаю экземпляр типа: Код:
SpeedFan:TSharedMem; Получаю указатель на shared memory откуда хочу читать значения: Код:
HMapping := OpenFileMapping(FILE_MAP_READ, false, 'SFSharedMemory_ALM'); pSharedBuf := MapViewOfFile(HMapping, FILE_MAP_READ, 0, 0, 0); На этом месте затык. Я получил указатель pSharedBuf. Как мне получить доступ к структуре формата SpeedFan.volts ? Какой должен быть следущий шаг? Заранее благодарю за подсказку, если кто поможет. |
#2
|
||||
|
||||
![]() Почти всё есть, чуть-чуть добавить:
Код:
type PSharedMem = ^TSharedMem; var SpeedFan: PSharedMem; begin HMapping := OpenFileMapping(FILE_MAP_READ, False, 'SFSharedMemory_ALM'); SpeedFan := MapViewOfFile(HMapping, FILE_MAP_READ, 0, 0, 0); ShowMessage(IntToStr(SpeedFan.Volts[0])); end; |
#3
|
|||
|
|||
![]() Спасибо! Тоесть я обьявил SpeedFan как указатель на структуру определенного типа и обращаюсь к нему как к структуре? Круто!
|