FAQ

Stepan Ilyin aka Step

Xakep, номер #051, стр. 051-100-3


A: Не стоит объяснять, что компьютерная индустрия развивается очень быстро. С каждом днем появляются девайсы, которые еще вчера казались чем-то абсолютно нереальным. Увы, у этой тенденции есть и обратная сторона. С ростом производительности увеличивается и тепловыделение. А перегрева компоненты компьютера не любят. Чуть что – и сразу глюки, зависоны, самопроизвольные перезагрузки... Поэтому развитие сферы водяного охлаждения компьютера отнюдь не случайно. Возьмем, к примеру, систему Koolance PC2-C (http://koolance.com/products/product.html?code=MCS-A01). Принцип работы прост до безобразия. К каждому из компонентов компьютера (а именно: процессору, винчестеру, северному мосту чипсета и графическому чипу видеокарты) проводятся вотерблоки, которые последовательно подключены к насосам, по которым циркулирует вода, и специальному резервуару, который охлаждает жидкость при помощи радиатора и нескольких вентиляторов. Установить такую систему совсем не сложно, особенно если учитывать, что PC2-C поставляется вместе со специальным корпусом, на котором присутствуют все необходимые крепления для компонентов системы, а также блок управления. Комплексное охлаждение, охватывающее все 4 греющихся компонента компьютера, работает очень эффективно, ничуть не хуже, чем лучшие экземпляры воздушных кулеров. Шума при работе практически нет, а ведь как раз это мы и любим. Тихо и холодно =). Жаль, что стоит такая система недешево. Этим, вероятно, и объясняется недоверие пользователей к подобным способам охлаждения.

Q: Как можно уменьшить размер исполняемого файла, скомпиленного на Delphi?

A: Самым простым решением будет использование какого-нибудь компрессора исполняемых файлов. К примеру, ASPACK (http://www.aspack.com/) или Shrinker (http://www.blinkinc.com). Другой способ сложнее (но и эффективнее) – писать программы на WinAPI без использования VCL. Для новичка это невероятно трудно, но если разобраться с компонентами Key Object Library (http://bonanzas.rinet.ru/rindex.htm), то результат превзойдет все ожидания!

Q: Можно ли ограничить длину текста, который пользователь вводит в TEdit, так, чтобы ширина текста не превышала ширину TEdit’а?

A: Многие начинающие Delphi-программеры сталкиваются с такой проблемой, а решить-то ее – раз плюнуть. Способов несколько. Опишу лишь один.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

var

   cRect : TRect;

   bm : TBitmap;

begin

   if ((Ord(Key) <> VK_TAB) and (Ord(Key) <> VK_RETURN) and

       (Ord(Key) <> VK_LEFT) and (Ord(Key) <> VK_BACK)) then

   begin

       Windows.GetClientRect(Edit1.Handle, cRect);

       bm := TBitmap.Create;

       bm.Width := cRect.Right;

       bm.Height := cRect.Bottom;

       bm.Canvas.Font := Edit1.Font;

       if bm.Canvas.TextWidth(Edit1.Text + Key) > CRect.Right then

       begin

           Key := #0;

       end;

       bm.Free;

   end;

end;

Смысл в том, что процедура перехватывает событие Edit1KeyPress, после чего измеряет ширину нового символа и уже введенного текста. Если общая ширина больше, чем заданная область TEdit'а, введенный символ отбрасывается.

Назад на стр. 051-100-2  Содержание  Вперед на стр. 051-100-4