Форум: "Прочее";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
ВнизОсобенности перевода проектов на Delphi 2009(10) Найти похожие ветки
← →
Andjey (2009-12-10 13:36) [0]Подкиньте толковую статью про Юникод. Интересно, какие трудности могут возникнуть при переводе своих проектов на Delphi 2009(10) ? Или не все так страшно? Гуглешь дает какие то поверхностные объяснения юникода впринципе. Хотелось бы почитать про него применительно к проектам Delphi.
← →
clickmaker © (2009-12-10 13:51) [1]> какие трудности могут возникнуть при переводе своих проектов
> на Delphi 2009(10) ?
замена AnsiString на String (если нужно, конечно)
выискивать места, где делается допущение, что размер символа = 1 байту
ну и все в таком духе
← →
@!!ex © (2009-12-10 13:57) [2]Насколько знаю, достаточно по всему проекту пройтись с реплейсом string на AnsiString
и все.
← →
Игорь Шевченко © (2009-12-10 13:57) [3]А что, Embarcadero совсем ничего не пишет или еще один разучившийся пользоваться поиском ?
← →
AntiUser (2009-12-10 14:01) [4]Бойтесь посетители ДМ! ИШ не в духе.
← →
Dimka Maslov © (2009-12-10 14:10) [5]
> Насколько знаю, достаточно по всему проекту пройтись с реплейсом
> string на AnsiString
> и все
Действительно так, однако после этого начинается куча warningoв по поводу возможной потери данных при преобразованиях из юникода и в юникод. Лечится соотв. настройками.
И вообще мне лично показалось, что вся юникодовость Delphi 2009 - разводка, строки обычные, а при вызовах WinAPI строки неявно преобразуются в юникод и обратно.
← →
clickmaker © (2009-12-10 14:18) [6]> И вообще мне лично показалось, что вся юникодовость Delphi
> 2009 - разводка, строки обычные
SizeOf("обычная строка") = ?
← →
clickmaker © (2009-12-10 14:20) [7]хотя, что это я... 4 вернет
← →
Кто б сомневался © (2009-12-10 14:24) [8]
> Насколько знаю, достаточно по всему проекту пройтись с реплейсом
> string на AnsiString
> и все.
Такое делать как раз не надо.
Лучше потратить день-два на просмотр всего кода. у меня вообще перевод занял около двух часов с D7 на D2009 проект среднего размера.
← →
Кто б сомневался © (2009-12-10 14:25) [9]
> И вообще мне лично показалось, что вся юникодовость Delphi
> 2009 - разводка, строки обычные,
Показалось просто. Бывает.
← →
Andjey (2009-12-10 14:43) [10]Что-то как-то [1] и [2] протеворечат друг другу. AnsiString --> String или String --> AnsiString ? Кто ошибся? А на толковую статью так никто и не укажет? Может у кого в личных архивах есть... Если только проблема в строковом преобразовании, то смысл было новую оболочку писать? Патч какой придумали и все. :)
> Кто б сомневался © (10.12.09 14:24) [8]
>Лучше потратить день-два на просмотр всего кода. у меня вообще перевод >занял около двух часов с D7 на D2009 проект среднего размера.
Так в чем конкретно заключался перевод?
← →
clickmaker © (2009-12-10 15:11) [11]> AnsiString --> String или String --> AnsiString ? Кто ошибся?
оба правы.
если нужно, чтобы проект стал полностью уникодным, нужно убрать случайно затесавшиеся AnsiString. Хотя, обычно их явно никто и не использует.
если нужно, чтобы проект не поддерживал уникод, заменить string на ansistring. Только нафуа тогда переходить на 2009?
← →
Кто б сомневался © (2009-12-10 15:25) [12]
> Так в чем конкретно заключался перевод?
В тех конструкция где вы плотно работаете именно с ANSI строками .
типа
Move
var
Count: Integer;
Buf1, Buf2: array[0..255] of Char;
begin
// Существующий код - неправильный, потому что string = UnicodeString
Count := Length(Buf1);
Move(Buf1, Buf2, Count);
// Правильный код для Юникода
Count := SizeOf(Buf1); // <<-- Задание размера буфера в байтах
Count := Length(Buf1) * SizeOf(Char); // <<-- Задание размера буфера в байтах
Move(Buf1, Buf2, Count);
end;
Или FillChar если вы указывали констатнту (хотя я использую ZeroMemory для обнуления), либо если вы указывали символ.
В таком коде , или подобному емуvar
r(Buffer, Count, 0);
Count: Integer;
Buffer: array[0..255] of Char;
begin
// Существующий код - неправильный, потому что string = UnicodeString
Count := Length(Buffer);
FillChar(Buffer, Count, 0);
// Правильный код для Юникода - любой из вариантов верный
Count := SizeOf(Buffer); // <<-- Задание размера буфера в байтах
Count := Length(Buffer) * SizeOf(Char); // <<-- Задание размера буфера в байтах
FillCha
end;
Здесь 3 статьи http://www.citforum.ru/programming/delphi/unicode/1.shtml
← →
Кто б сомневался © (2009-12-10 15:29) [13]А вообще вот это поюзайте:
http://lmgtfy.com/?q=%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4+%D0%BD%D0%B0+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4+delphi
← →
@!!ex © (2009-12-10 15:43) [14]> [11] clickmaker © (10.12.09 15:11)
> Только нафуа тогда переходить на 2009?
1) Не поддерживаются другие версии уже. Да и купить сложно
2) Далеко не везде и не всегда нужен юникод.
← →
Кто б сомневался © (2009-12-10 16:29) [15]
> 2) Далеко не везде и не всегда нужен юникод.
Эм. Все API работает на юникоде.
Лучше сказать "не везде и не всегда нужен ANSI". Так будет правильней.
← →
Кто б сомневался © (2009-12-10 16:32) [16]А вообще народ переходите на 2009, я сначала тоже парился, переходить с D7 на 2009, а теперь обратно не перейду. Там помимо юникода столько фич удобных, - для написания кода итп, что обратно не затянешь.
Проблем при переводе проектов с D7 нет, только мелочи которые быстро фиксятся. Да и программы быстрее работают от 2009, чем на младших версиях.
← →
clickmaker © (2009-12-10 16:33) [17]> Эм. Все API работает на юникоде
кроме 9х и МЕ
← →
Кто б сомневался © (2009-12-10 16:40) [18]
> кроме 9х и МЕ
ну дык их и юзают еденицы. Программы уже не делают под них. Делают от W2k.
← →
Andjey (2009-12-10 16:56) [19]
> Кто б сомневался © (10.12.09 16:32) [16]
> А вообще народ переходите на 2009,
Да и фейс у него покрасимше будет.... говорили..... Что-то по поиску не могу найти типа Delphi2009 в картинках. Посмотреть на него хоть со стороны. Раньше в журналах Компьютер Пресс вроде рекламировали новые среды.
← →
Eraser © (2009-12-10 17:35) [20]> [0] Andjey (10.12.09 13:36)
> Подкиньте толковую статью про Юникод.
http://edn.embarcadero.com/article/38446
http://edn.embarcadero.com/article/38582
http://edn.embarcadero.com/article/38703
← →
Andjey (2009-12-10 17:57) [21]
> Eraser © (10.12.09 17:35) [20]
Спасибо. Я первую часть уже читал. А вот на 2 и 3 ссылок не нашел. Сейчас все пучком. Будем почитать. :)
← →
Кто б сомневался © (2009-12-10 19:05) [22]
> Andjey
> Спасибо. Я первую часть уже читал. А вот на 2 и 3 ссылок
> не нашел.
Я ж тебе давал ссылку в [12]. Там и на 2 и на 3 есть.
В трех соснах заблудился да еще и в гугле искать не умеешь..
← →
Anatoly Podgoretsky © (2009-12-10 20:24) [23]> Andjey (10.12.2009 16:56:19) [19]
Ну посмотри на Visual Studio
← →
Andjey (2009-12-10 20:36) [24]
> Кто б сомневался © (10.12.09 19:05) [22]
> Я ж тебе давал ссылку в [12]. Там и на 2 и на 3 есть.
> В трех соснах заблудился да еще и в гугле искать не умеешь.
Конечно же, спасибо. Я их видел, просто я не сразу среагировал. Было много открыто закладок в Опере после гугла. Кстати, ссылку анимированую прикольную ты выложил. :) . Я вкурсе что гугл сейчас так может делать.
← →
turbouser © (2009-12-10 21:07) [25]string на ansi заменять тоже надо с головой.. как и char на ansichar.. да и много тонкостей всяких может появиться.
вот как-то переводил я fr2.5 под D2010.. мда.. недели две точно ушло..
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.006 c