31 октября 2008 г.

Ответ на задачку №2

Главная проблема в приведённом коде находится в этой строке:
if not CreateProcess(PChar(Converter), 
       PChar('"' + Converter + '" "' + SrcFile + '" "' + Result + '" /storefile'), 
       nil, nil, False, 0, nil, nil, SI, PI) then

Переводы

Начиная с этого момента я решил время от времени выкладывать переводы интересных (с моей точки зрения) постов в блогах. Например, в The Old New Thing.

Да, я знаю, что я ни разу не переводчик, и что мои переводы будут отстоем.

19 октября 2008 г.

Обновление TasksEx - попытка №2

Обновился модуль TasksEx, включая пример. Текст статьи остался без изменений, просто был перезалит обновлённый архив.
В модуль добавлены стандартные процедуры для отмены выполнения потока. Реализация проста - при запуске потока EnterWorkerThread возвращает дескриптор задачи, который потом можно передать в одну из функций отмены - AbortXXX. В рамках самого потока вы должны периодически вызывать CheckAbort, которая возбудит тихое исключение, если поток был отменён.
Предложенный функционал является универсальным в том смысле, что функции отмены можно использовать не только для рабочих потоков EnterWorkerThread, но и для любых потоков вообще. Для регистрации потоков служат функции Register/UnregisterWorkerThread.
Также, по просьбе некоторых товарищей туда вошёл этот функционал.

6 октября 2008 г.

Сага о X, Y и Z...

...или о том, как же важно правильно формулировать, чего мы хотим.

Однажды Новичок захотел сделать X. Но поскольку Новичок был новичком, X с ходу у него сделать не получилось...

3 октября 2008 г.

Несколько слов о виртуализации в Vista

Это копия моего поста с форума.

Виртуализация позволяет работать в Vista старым кривым программам, которые пытаются писать свои даные в не предназначенные для этого места (Program Files, Windows и т.п.).