Главная страница
    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.47 MB
Время: 0.041 c
14-1084177556
Всеволод Соловьёв
2004-05-10 12:25
2004.05.30
Про надмозга


11-1073169165
tbyte
2004-01-04 01:32
2004.05.30
KOL


7-1082487224
Shopot
2004-04-20 22:53
2004.05.30
Пароль.


14-1084468224
acsoft
2004-05-13 21:10
2004.05.30
Какие еще есть утилиты кроме UPX и ASP для сжатия или просто шифр


1-1084879871
ГудБой
2004-05-18 15:31
2004.05.30
Как сделать drag-dock моего окошечка к любой стороне главной форм





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский