Форум: "Основная";
Текущий архив: 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.037 c