27 января 2010 г.

Задачка №4

Что не так в следующем коде?
function DoSomethingW(const AStr: PWideChar): Integer; stdcall;
var
S: WideString;
begin
S := AStr;

if (S <> '') and SomeCondition then
Result := Length(S) // положим, это и есть реальная работа
else
begin
SetLastError(ERROR_INVALID_PARAMETER);
Result := 0;
end;
end;

Объяснить, в чём косяк и как можно исправить.

Ответ - как обычно, примерно через месяц.

Ответ.

6 января 2010 г.

Советы и трюки в EurekaLog, часть 1

Многие наши клиенты часто спрашивают, как сделать различные вещи с EurekaLog. Ну, у нас есть документация (chm-файл, а также online), которая описывает опубликованный интерфейс (функции и т.п.), который вы можете использовать для смены поведения по-умолчанию. Это документация в "стиле словаря". Чтобы использовать её, вам нужно изучить все кусочки и придумать способ, как сложить их вместе, чтобы получить интересное/нужное поведение. Кажется, что это слишком много работы для типичного человека, потому что все продолжают задавать простейшие вопросы типа "Моё приложение работает в окружении без оператора. Как я могу отключить диалог об ошибке EurekaLog?".

Поэтому, я запланировал серию постов о типичных сценариях использования и их реализации. Это будут статьи типа Q&A/FAQ. Т.е. простые вопросы и ответы на них. Ответы обычно будут включать в себя манипуляцию настройками или написание небольших кусочков кода (как правило - обработчиков событий). Итак, часть первая.