Вот, попался тут баг один. Вернее, не баг, а подводный камень.
Что не так в этом коде?
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 и наоборот не являются проблемой в этой задаче (ладно, это очень сильная подсказка, но уж больно вещь не очевидная).