Товарищи, есть код на Си, который мне нужно перевести на Delphi.
Помогите, плз.
Код на Си:
static void SetListGroupIcons(HWND hwndList,HANDLE hFirstItem,HANDLE hParentItem,int *groupChildCount)
{
...
int childCount[IGNOREEVENT_MAX]={0,0,0,0,0,0,0},i;
int iconOn[IGNOREEVENT_MAX]={1,1,1,1,1,1,1};
...
hChildItem=(HANDLE)SendMessage(hwndList,CLM_GETNEXTITEM,CLGN_CHILD,(LPARAM)hItem);
if(hChildItem) SetListGroupIcons(hwndList,hChildItem,hItem,childCount);
...
for( i=0; i < SIZEOF(iconOn); i++ ) {
if(groupChildCount) groupChildCount[i]+=childCount[i];
}
...
}
...
SetListGroupIcons(somehandle1,somehandle2,somehandle3,NULL);
пишу это на Delphi:
procedure SetListGroupIcons(hwndList: THandle; hFirstItem: THandle; hParentItem: THandle; var groupChildCount: Array of Integer);
var childCount: array[0..IGNOREEVENT_MAX-1] of Integer; // = (0,0,0,0,0,0,0);
iconOn: array[0..IGNOREEVENT_MAX-1] of Integer; // = (1,1,1,1,1,1,1);
i: Integer;
...
for i:=0 to IGNOREEVENT_MAX-1 do
begin
iconOn[i] := 1;
childCount[i] := 0;
end;
...
hChildItem := THandle(SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, Windows.lParam(hItem)));
if hChildItem <> 0 then SetListGroupIcons(hwndList, hChildItem, hItem, childCount);
...
for i:=Low(iconOn) to High(iconOn) do
if (Length(groupChildCount)>0) then groupChildCount[i] := groupChildCount[i] + childCount[i];
...
var TempNilArray: Array of Integer; // локальная переменная
SetListGroupIcons(somehandle1, somehandle2, somehandle2, TempNilArray); // вызывается из другой процедуры
Где моя ошибка?
(полный код на си есть
здесь)