Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2011, 20:26   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Вопрос "соответствие процессоров" как в диспетчере задач

Всем доброго времени суток.


В моей программе надо реализровать вот это:


Хочу реализовать это ввиде списка из CheckListBox.

функцией:
Код:
function GetProcessorsCount: SmallInt;
var
  Sys: _SYSTEM_INFO; /
begin
  GetSystemInfo(Sys);
  Result := Sys.dwNumberOfProcessors;
end;
получаю кол-во ядер в ЦП. Сколько ядер, столько и Items в ChkListBox.

Далее как определять что отмечено а что нет и в соответствии с отмеченным составлять правильную маску?

Сейчас я её ввожу при помощи edit, в формате "1,2,3,4,5,n".

И эти функции:
Переводит строку "1,2,3,4,5,n" в маску.
Код:
function StrToAffinity(AStr: string): Cardinal;
var
  SL: TStringList;
  I: Integer;
  IntVal: SmallInt; 
  Mask: Cardinal; 
begin
  Result := 0;
  SL := TStringList.Create;
  SL.Delimiter := ','; 
  SL.DelimitedText := AStr; 
  try
    for I := 0 to SL.Count - 1 do 
    begin
      IntVal := StrToIntDef(SL[I], 0);
      Dec(IntVal); 
      if IntVal >= 0 then 
      begin
        Mask := 1 shl IntVal; 
        Result := Result or Mask;
      end;
    end;
  finally
    SL.Free;
  end;
end;
Переводит маску в строку "1,2,3,4,5,n".
Код:
function AffinityToStr(AMask: Cardinal): string;
var
  I: Integer; 
begin
  Result := '';
  for I := 1 to 16 do //от 1 до 16
  begin
    if I - 1 in TIntegerSet(AMask) then
      if Result <> '' then
        Result := Result + ',' + IntToStr(I)
      else
        Result := IntToStr(I);
  end;
  if Result = '' then
    Result := '0';
end;
Каким образом это делать?
Get/SetProcessAffinity - я знаю.
Мне нужно применить это к отмеченным и не отмеченным элементов списка.

как это реализовать?
Человек_Борща вне форума Ответить с цитированием
Старый 29.06.2011, 20:38   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В стандартном CheckListBox есть свойство Checked[Index: Integer]: Boolean; Если в ChkListBox есть такое, то в цикле анализировать и использовать в качестве номера номер из ChkListBox.Items.Strings[i]

+не увидел, что у вас и используется стандартный CheckListBox
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 29.06.2011 в 20:58.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает выбор ОС через клавиатуру в "диспетчере Загрузок ОС" Ecosasha Компьютерное железо 6 30.10.2011 01:03
Аналог "Задать соответсвие.." в Диспетчере задач Человек_Борща Общие вопросы Delphi 12 23.09.2010 09:40
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04