19 ноября 2009 г.

Задачка №3

Вот, попался тут баг один. Вернее, не баг, а подводный камень.

Что не так в этом коде?

var
Text, Data: AnsiString;
begin
// откуда-то получаем данные. Например - от GetWindowTextA
Data := ...;

// Теперь сам код
Text := 'Text ' + Data;

ShowMessage(Text);
end;

Условия: Delphi 2009 или 2010, все настройки по-умолчанию.

Указанный выше код может не работать при некоторых неочевидных условиях. Ваша задача - объяснить почему.

Подзадачка №3.5: как исправить вышеприведённый код, чтобы избавиться от проблемы?

Ответ на задачку будет выложен где-то через месяц.

Добавлено уточнение по комментариям посетителей:

GetACP = 1251, в строке Data лежит текст в 1251. Т.е. мы запускаем программу на винде с "Язык для не unicode программ" = Русский и она работает с русским текстом.

Трансформация из unicode в ANSI и наоборот не являются проблемой в этой задаче (ладно, это очень сильная подсказка, но уж больно вещь не очевидная).

Ответ.

15 ноября 2009 г.

Установка Delphi 7 в Windows 7

Примечание: ничего нового в установке Delphi по сравнению с Vista в Windows 7 нет. Тем не менее, я решил выложить отдельное описание, т.к., похоже, не все с этим справляются.

Эта статья рассказывает как устанавливать Delphi 7 на Windows 7. В принципе, эта же информация должна быть применима для всех Delphi версий с 4 до 7 (включительно). Я устанавливал Delphi 7.1 (7.0 с SP 1) Enterprise на русскоязычную 64-х битную Windows 7.

Предварительные примечания: