Привет Я сделал патчи которые меняют поведение класса QString при преобразовании из char * <--> QString. Проблемы возникают когда используется преобразование по умолчанию, т.е. конструктор QString(const char *) и т.п. О всех нюансах я писал в своей статье "Использование Qt-2.2.x в русскоязычных программах " (http://www.kde.ru/docs.php?action=show&id=qt_russian). К сожалению избежать бинарной несовмесимости не удалось :((( Несовместимость возникает из-за того что некоторые изменяемые методы реализованны как inline. Сейчас Тролли согласились рассмотреть эти замечания, и я надеюсь поведение конструкторов QString всё-таки изменится (наверное в версии 3.1 или 4.0). Если у кого есть желание и время потестируйте эти патчи. Я договорился с Троллями что на следующей неделе (где-то во вторник - среду) отправлю им патчи. Так что, если у кого есть какие-нибудь замечания или дополнения я жду :))))) Патчи накладываются в порядке указанном как 'step.x'. Краткое описание: qt-x11-free-3.0.2-0004-step.0.diff ---------------------------------------------- Этот патч убирает зависимость между классами QTextCodec и конструкторами QString изпользуемыми для преобазования char * <--> QString. В противном случае, т.к. мы в конструкторах будем использовать QTextCodec, будут возникать "мертвые циклы" (death loops) [Конструктор QString] -> [Метод QTextCodec] -> [Конструктор QString] -> .... qt-x11-free-3.0.2-0004-step.1.diff ---------------------------------------------- Этот патч приводит в соответствие поведение метода QTextCodec::toUnicode в соответствие с поведением конструкторов QString отвечающих за преобразование char * <--> QString. Дело в том что оригинальное поведение выглядит след. образом: - QString str(0) или QString str - создают строку str для которой выполняют- ся условия: str.isNull() == TRUE и str.isEmpty() == TRUE. - str = QTextCodec::toUnicode(0,...) - создают строку str для которой выпол- няются условия: str.isNull() == TRUE и str.isEmpty() == TRUE. В этой части поведение совпадает. - QString str("") - создают строку str для которой выполняются условия: str.isNull() == FALSE и str.isEmpty() == TRUE. - str = QTextCodec::toUnicode("",...) - создают строку str для которой выпол- няются условия: str.isNull() == TRUE и str.isEmpty() == TRUE. В этой части поведение не совпадает. qt-x11-free-3.0.2-0004-step.2.diff ---------------------------------------------- Этот патч изменяет поведение конструкторов класса QString. После применения этого патча преобразование char * <--> QString выполняется с помощью колека для установок локали. qt-x11-free-3.0.2-0004-step.3.diff ---------------------------------------------- Этот патч испавляет все остальные методы и конструкторы, в т.ч. и для класса QChar. Этот патч вносит бинарную несовместимость, из-за того что некоторые методы сделаны как inline. -- С Уважением Сукиязов Сергей