Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

УКАЗАТЕЛИ...   Найти похожие ветки 

 
DN   (2004-05-19 15:40) [0]

Есть у меня структура rgCRLEntry, в Delphi объявлена так:
type
 PCRL_ENTRY = ^CRL_ENTRY;
 CRL_ENTRY = record
   SerialNumber :CRYPT_INTEGER_BLOB;
   RevocationDate :TFILETIME;
   cExtension :DWORD;
   rgExtension :PCERT_EXTENSION;
 end;


А в MSDN пишут про нее так:
rgCRLEntry
Array of pointers to CRL_ENTRY structures. Each of these structures represents a revoked certificate.


typedef struct _CRL_ENTRY {
 CRYPT_INTEGER_BLOB SerialNumber;
 FILETIME RevocationDate;
 DWORD cExtension;
 PCERT_EXTENSION rgExtension;
} CRL_ENTRY,
*PCRL_ENTRY;


Помогите разобраться, если это все-таки массив, хотя...,
то как пройтись по элементам, как в обычном массиве не катит.


 
Ozone ©   (2004-05-19 15:49) [1]

Дык в Си к указателю можно обращаться к к массиву, а в Pascal"е нужно немного извратиться чтобы сделать подобное.

Помню еще на 1-2 курсе нас засталляли делать подобное.


 
DN   (2004-05-19 15:57) [2]

=> Ozone ©   (19.05.04 15:49) [1]
Первый раз встречаюсь, честное слово, если не сложно, поясните как?


 
Курдль ©   (2004-05-19 15:58) [3]


> Помогите разобраться, если это все-таки массив, хотя...,
> то как пройтись по элементам, как в обычном массиве не катит.


var P: PCRL_ENTRY; i: Integer;
begin
 for i := 0 to rgCRLEntry.Count - 1 do
 begin
   P := rgCRLEntry.Items[i];
   P.SerialNumber := "xxx.xxx.xxx.xxx";
   ....
 end;
end;


 
Reindeer Moss Eater ©   (2004-05-19 16:05) [4]

rgExtension - указатель на первый элемент CERT_EXTENSION
cExtension  - кол-во элеменов всего


 
DN   (2004-05-19 16:10) [5]

=> Reindeer Moss Eater ©   (19.05.04 16:05) [4]
это для PCCRL_CONTEXT, а эл-ты отзыва в PCCRL_CONTEXT -> PCRL_INFO -> PCRL_ENTRY;

=> Курдль ©   (19.05.04 15:58) [3]
что-то на Items ругается


 
Reindeer Moss Eater ©   (2004-05-19 16:12) [6]

Там все точно так же.
один член структуры показывает на первый элемент
второй член структуры говорит про кол-во элементов


 
Курдль ©   (2004-05-19 16:14) [7]


> => Курдль ©   (19.05.04 15:58) [3]
> что-то на Items ругается

Это я для списка по привычке привел. Мож на rgCRLEntry[i] отзовется.


 
DN   (2004-05-19 16:24) [8]

:))
первый элемент я вижу, количество тоже определяется :
Pinfo.pCrlInfo.cCRLEntry

Как встать на второй элемент?
прибавить к адресу 1-го размер стр-ры или как????


 
Reindeer Moss Eater ©   (2004-05-19 16:27) [9]

У тебя массив указателей, а не массив структур.
Размер 32 битного указателя в windows забыл?


 
DN   (2004-05-19 17:03) [10]

4 байта вроде, но так тоже не идет:

Pinfo^.pCrlInfo^.rgCRLEntry^:= Pinfo^.pCrlInfo^.rgCRLEntry^+i*4;


 
Курдль ©   (2004-05-19 17:05) [11]

А чё, Делфя отказалась доступаться к элементам массива по индексам? :(


 
WebErr ©   (2004-05-19 17:18) [12]

1) Если указатель PChar, то можно к нему прибавлять любой Integer и снова получать PChar.
2) Чтобы от указателя на один тип перейти к указателю на любой другой тип нужно воспользоваться типом Pointer, т.е.
Byaka := PChar(Pointer(Kaka));
3) Чтобы получить i-й (i=Index) элемент массива по указателю (Ptr), который указывает на начало массива (а-ля С++), нужно выполнить:

function SeekElem(Ptr: Pointer; Index, ElemSize: Integer): Pointer;
begin
 Result := Pointer(PChar(Ptr) + Index*ElemSize);
end;

которая вернёт указатель на нужный элемент.
Note: ElemSize - велечина отведённая под каждый из элементов массива.


 
DN   (2004-05-19 17:24) [13]

а здесь нет массива в явном виде.
так идет, но криво, что-то со смещением???  
Pinfo.pCrlInfo.rgCRLEntry:= PCRL_ENTRY(Integer(Pinfo.pCrlInfo.rgCRLEntry)+4);


 
Reindeer Moss Eater ©   (2004-05-19 17:33) [14]

Не надо увеличивать на четыре типизированные указатели.

Надо иметь Pointer на начальный элемент и шагать прибавляя к нему единицу.


 
WebErr ©   (2004-05-19 17:45) [15]


> WebErr ©   (19.05.04 17:18) [12]

Короче, переходите на С - там это всё удобнее! ...
Без обид! 8)



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.077 c
14-1083933763
Nick-From
2004-05-07 16:42
2004.05.30
Застрял на запросе


11-1073933570
Phantomaz
2004-01-12 21:52
2004.05.30
Как поменять шрифт и цвет текста Item ов в PopupMenu ?


7-1082626574
Alex_s
2004-04-22 13:36
2004.05.30
Работа с контроллером


14-1084345908
Mike Kouzmine
2004-05-12 11:11
2004.05.30
Эстония согласна простить Россию,


6-1081499243
Srg
2004-04-09 12:27
2004.05.30
TMemoryStream & TidTCPServer