Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.039 c
6-1081950490
Yurec66
2004-04-14 17:48
2004.05.30
У кого в сети еще запущена моя программа


1-1084968983
Jprs154
2004-05-19 16:16
2004.05.30
Выдиралка данных из HTML странички


1-1085054498
Т_М_П
2004-05-20 16:01
2004.05.30
Как написать символ в Мемо?


1-1084584669
Игорь
2004-05-15 05:31
2004.05.30
скажите как сделать так чтобы в форме1 при нажатии на Button


3-1083937862
goozman
2004-05-07 17:51
2004.05.30
BDE





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский