Russian Qt Forum
Май 05, 2024, 06:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QString().arg() bug ?  (Прочитано 12577 раз)
L.Marvell
Гость
« Ответ #15 : Март 30, 2006, 17:11 »

Да, действительно ошибочка вышла...
Записан
alex0303
Гость
« Ответ #16 : Март 30, 2006, 18:52 »

А такой вариант "%100%11"? Улыбающийся
Записан
Asaphus_Expansus
Гость
« Ответ #17 : Март 31, 2006, 09:21 »

Тоже вариант, работает, да.
Записан
Dendy
Гость
« Ответ #18 : Март 31, 2006, 10:42 »

Результат отладки такого вьІражения:

Код:
QString s = QString( "%1 \b%2" );


Код:
s.d->data[0] == 37;
s.d->data[1] == 49;
s.d->data[2] == 32;
s.d->data[3] == 8;
s.d->data[4] == 37;
s.d->data[5] == 50;


Никакого удаления предьІдущего символа не произошло. Но даже если бьІ произошло, то в QString передалась бьІ строка с уже удалённьІм символом. Толку...

Ещё есть потенциально опасньІй момент, когда строка вида:

Код:
QString s = tr( "%1%2" );


переводится как:

Код:
QString( "%10%2" );


Я так понимаю, что такие неоднозначньІе моментьІ нужно переводить как:

Код:
QString( "%100%11" );


Но тогда будет путаница с индексами исходного текста-ключа и результирующего.

Думаю, самьІй правильньІй вариант теоретически должен бьІть такой:

Код:
QString s = QString( "%1%b0%2" ).arg( "A" ).arg( "B" );


%b - некий мной придуманьІй спец-символ для метода arg(). Когда етот метод находит минимальньІй индекс, которьІй нужно заменить, - он автоматически удаляет следующий за етим индексом %b.
Записан
nEoN
Гость
« Ответ #19 : Март 31, 2006, 12:20 »

Вот ещё один вариант :
Код:
QString s = QString("%1%2%3").arg("A").arg("0").arg("B");
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 20.