Модуль "Мое меню" (часть 3) - GetMyMenu

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 261
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
procedure TfrmP2K_MyMenu.GetMyMenu(var AMyMenu: TArrayOfMyMenu; var AMyMenuLink: TArrayOfMyMenuLinks; AfrmProgress: TfrmProgress);
var
  xData: pbytearray;
  j: integer;
  rec: string;
  res: boolean;
  count: word;
  cnt: integer;

begin
  cnt:=0;
  if not Form1.IsP2KConnected then exit;
  xData:= AllocMeM(14);
  //SEEM_SHORTCUT_SLOTS
  try
    res:= P2K.ReadSeem('0157', '0001', '0', 0, xData, count);
    if not res then begin FreeMem(xData); exit; end;
    for j:= 0 to 13 do SEEM_SHORTCUT_SLOTS[j]:= xData[j];
  finally
    FreeMem(xData);
  end;
  AfrmProgress.AdvProgressBar1.Value:= 0;
  AfrmProgress.AdvProgressBar1.MaxValue:= 100;
  xData:= AllocMem($FA4);
  try
    FillMemory(@AvailMenu, 100, $FF);
    FillMemory(@AvailMenuLink, 50, $FF);
    //for j:= 1 to 100 do AvailMenu[j]:= 255;
    //for j:= 1 to 50 do AvailMenuLink[j]:= 255;
    for j:= 1 to 100 do
      begin
        rec:= inttohex(j, 4);
        FillMemory(xData, $FA4, 0);
        res:= P2K.ReadSeem('0002', ansilowercase(rec), '0', 0, xData, count);
        if res then begin
                      if xData <> nil then ConvertBufferToMyMenuStructure(xData, AMyMenu[j]) else break;
                      inc(cnt);
                      AfrmProgress.AdvProgressBar1.Value:= trunc(100*(cnt/150));
                      AfrmProgress.Update;
                    end;
      end;
  finally
    FreeMem(xData, $FA4);
  end;
  xData:= AllocMem($FA4);
  try
    for j:= 1 to 50 do  begin
                          rec:= inttohex(j, 4);
                          FillMemory(xData, $FA4, 0);
                          res:= P2K.ReadSeem('017a', ansilowercase(rec), '0', 0, xData, count);
                          if res then begin
                            if xData <> nil then ConvertBufferToMyMenuLinkStructure(xData, AMyMenuLink[j]) else break;
                            inc(cnt);
                            AfrmProgress.AdvProgressBar1.Value:= trunc(100*(cnt/150));
                            AfrmProgress.Update;
                          end;  
                        end;
  finally
    FreeMem(xData, $FA4);
  end;
end;
Rambler's Top100