crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QString
Гость_Гость_*
сообщение 6.3.2009, 20:26
Сообщение #1





Гости








    


    QString te=textEdit->toPlainText();
    char expressao[256];
    for(int j=0;j<te.size();j++)
         expressao[j]=te[j].toAscii();
        //  toAscii() неоходимо иначе
        //  error: cannot convert `QCharRef' to `char' in assignment


    const char *const ex=te.toAscii();
    char cc[]={ex[0],ex[1],sizeof(char),0};
    cc[0]+=1;
    cc[0]-=1;  // глядим в отладчике - чуш


    as((char*)(const char *const)te.toAscii());    
        // внутри as(char*) такойже код раьотает


querying-string-data гарантии на сохранение данных по указателю конечно не дает, но чтоб испортить в следующей строчке - это жестко.

А кто знает можно локаль подправить чтоб десятичная точка была, а не запятая. Есть методы кроме локаль "C"?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Гость_Гость_*
сообщение 7.3.2009, 6:54
Сообщение #2





Гости








    


Цитата(BRE @ 6.3.2009, 21:57) *
Все нормально.

У меня ненормально. Помимо неизвестной операционки, неизвестного компилятора с неизвестными опциями и неизвестного Qt (а там в последних версиях над QString идет работа) есть еще одно отличие. У Вас те получена из си-шной строки, а у меня из редактора и запросто может отличатся какимто флагом, который будет означать 16 разрядную кодировку.

Цитата
Кстати, тут работа идет с локальным массивом символов cc, а не с данными из te.

Да с массивом все нормально. Разрушается память по указателю ех.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 7.3.2009, 9:32
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Гость @ 7.3.2009, 6:54) *
У Вас те получена из си-шной строки, а у меня из редактора и запросто может отличатся какимто флагом, который будет означать 16 разрядную кодировку.

Разницы нет откуда получена строка, все строки QString храняться в UNCODE.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 7.3.2009, 22:21
Сообщение #4





Гости








    


Цитата(BRE @ 7.3.2009, 9:32) *
Разницы нет откуда получена строка, все строки QString храняться в UNCODE.


видимо, в общем не важно. Взял codelite.org, там опция загрузки екзекшника на отладку и походил им немного ( а пишу в qdev - недавно 0.27 починили немного но отладка очень плохая ) , единственное неудобство в кютэшных дллках относительные пути прописаны и он хоть строки показывает а файлы исходников кютэ не опознает.

В общем можно было и не смотреть, достаточно внимательно доки почитать :( , подвела аналогия с стл. Здесь возвращается уннамед QByteArray на который сразуже зовется деструктор. Тоесть код инвалидный. Нужно звать strncpy, или именованную переменную заводить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 2:10