crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> 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"?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 6.3.2009, 21:35
Сообщение #2


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

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


А ты чего хочешь сделать вообще? Можно так попробовать:

const QChar chr = te[j];
expressao[j]=chr.toAscii();


Либо так:

expressao[j]=te.at(j).toAscii();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 6.3.2009, 21:57
Сообщение #3


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

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

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




Репутация:   44  


Цитата(Гость @ 6.3.2009, 20:26) *
        QString te=textEdit->toPlainText();
    const char *const ex=te.toAscii();
    char cc[]={ex[0],ex[1],sizeof(char),0};
    cc[0]+=1;
    cc[0]-=1;  // глядим в отладчике - чуш


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


Все нормально.

#include <QDebug>

int main( int, char *[] )
{
        QString te = "test str";

        const char *const ex = te.toAscii();
        char cc[] = { ex[ 0 ], ex[ 1 ], sizeof( char ), 0 };
        qDebug( "%i", cc[ 0 ] );
        cc[ 0 ] += 1;
        qDebug( "%i", cc[ 0 ] );
        cc[ 0 ] -= 1;
        qDebug( "%i", cc[ 0 ] );

        return 0;
}


Цитата
116
117
116


Цитата(Гость @ 6.3.2009, 20:26) *
querying-string-data гарантии на сохранение данных по указателю конечно не дает, но чтоб испортить в следующей строчке - это жестко.

Кстати, тут работа идет с локальным массивом символов cc, а не с данными из te.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 7.3.2009, 6:54
Сообщение #4





Гости








    


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

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

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

Да с массивом все нормально. Разрушается память по указателю ех.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 7.3.2009, 6:57
Сообщение #5





Гости








    


а cc[ 0 ] +-= 1; это просто чтоб точки прерывания ставить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 7.3.2009, 9:32
Сообщение #6


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

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

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




Репутация:   44  


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

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





Гости








    


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


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

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


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

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




Репутация:   -1  


пытаюсь сделать toLong(&ok, 16); для 0xffffffff800706be - не срабатывает. Почему?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 13.3.2009, 19:12
Сообщение #9


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

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

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




Репутация:   44  


Цитата(kuler @ 13.3.2009, 19:10) *
пытаюсь сделать toLong(&ok, 16); для 0xffffffff800706be - не срабатывает. Почему?

Что значит не срабатывает? В ok ошибку выставляет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 13.3.2009, 19:31
Сообщение #10


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

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




Репутация:   -1  


BRE, в ок фалсе и 0 выдает
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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