Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как по ссылке (Pointer) вытянуть данные
|
|||
|---|---|---|---|
|
#18+
Возвращается ссылка на данные (Pointer) Данные имеют такую структуру typedef struct varstring_tag { DWORD dwTotalSize; DWORD dwNeededSize; DWORD dwUsedSize; DWORD dwStringFormat; DWORD dwStringSize; DWORD dwStringOffset; } VARSTRING, FAR *LPVARSTRING; Как отсюда выдрать данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2004, 18:47 |
|
||
|
как по ссылке (Pointer) вытянуть данные
|
|||
|---|---|---|---|
|
#18+
Во первых, советую псомотреть в файле windows.pas как точно описана эта структура, поскольку ты приводишь описание на C Обычно имена совподают, так что ищи по имени. Далее, эта структура есть именно возвращаемое значение, или она передаётся в функцию как параметр? Обычно в Win API используется второй способ, поскольку память под данные должна выделить вызывающая программа, а не ОС. Borland же во всех подобных случаях объявляет подобные параметры как var (все заголовки к Win API функциям описаны всё в том же файле windows.pas). При этом компилятор сам передаст вызываемой функции указатель на струткуру, а не саму струткуру. В результате в програме должно быть что-то типа var varstring_tag:Tvarstring_tag; //обявление переменной .... WinAPIFunc ( Param1,Param2,varstring_tag); //если структура в описании функции указана как var, //то просто указываем имя нашей переменной .... И вообще, при программировании через Win API изучение файла windows.pas очень полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 02:26 |
|
||
|
как по ссылке (Pointer) вытянуть данные
|
|||
|---|---|---|---|
|
#18+
Да, собственно по работе с указателями. Описание структруы данных и типа - указателя на неё type TMyStruc = record //собственно структура V1:integer; V2:double; V3:word; V4:dword; end; PMyStruc = ^TMyStruc; //тип-указаетль var Struc1:TMyStruc; //это обычная переменная, под неё выделяется память размером SizeOf(TMyStruc) Struc2:PMyStruc; //это переменная - указатель на струткуру, под неё выделяется 4 байта .... WinAPIFunction ( @Struc1 ); //вызов функции, которой нужно передать указаетль на структуру //обращение к данным обычным способом New(Struc2); //!!! выделение памяти под структуру try Struc2^.V1:=0; //запись данных, после имени переменной ставим ^ WinAPIFunction( Struc2 ); ...:=Struc2^.V2; //считывание данных finally Dispose(Struc2); //освобождение памяти после завершения работы со структурой end; если указатель на структуру передаётся как результат вызываемой функции, то можно использовать только второй вариант, поскольку при попытке написать что-то типа @Struc1 := WinAPIFunc; компилятор вас пошлёт, поскольку он такие вещи делать не умеет. Зато второй варинат Struc2:= WinAPIFunc; сработает как положено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 02:42 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32372626&tid=2115168]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 444ms |

| 0 / 0 |
