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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: загрузка из файла в определенном формате  (Прочитано 6051 раз)
Dizzy
Гость
« : Март 04, 2010, 09:13 »

Понадобились из исходников GIMP 2 следующие функции.
Код:
gchar * fread_pascal_string (gint32 *bytes_read, gint32 *bytes_written, const guint16 mod_len, FILE *f, gint *error);

gchar * gimp_any_to_utf8 (const gchar *str, gssize len, const gchar *warning_format, ...);

gchar * fread_unicode_string (gint32 *bytes_read, gint32 bytes_written, const guint16 mod_len, FILE *f, gint *error);

Нет ли их аналогов в Qt? (не охота тяунть в проект весь Glib)
p.s. если надо могу выложить реализацию функций.
Записан
SABROG
Гость
« Ответ #1 : Март 04, 2010, 09:26 »

Написал 2, а вставил 3. Напиши чего они делают.
Записан
Dizzy
Гость
« Ответ #2 : Март 04, 2010, 18:22 »

Написал 2, а вставил 3. Напиши чего они делают.

2 - это GIMP второй версии.  Подмигивающий
А функции три.

По поводу - что делают, точно не знаю.
Первая считывает из файла "паскалевскую" строку.
Вторая преобразовывает кодировку строки. Из любой текущей кодировки в кодировку UTF-8.
Третья считывает строку из файла, представленную в кодировке UTF-8.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #3 : Март 04, 2010, 20:16 »

можно почитать про кодеки ( setCodecCString и т.д. )
использовать соответствующие ф-ции QString::fromUtf8 и др.
что такое "паскалевская строка"?
Записан
gigabyte
Гость
« Ответ #4 : Март 04, 2010, 20:22 »

Паскалевская строка(класическая) - масив байтов (т.е. char-ов ) от 1 до N где на 0-м месте Количество символом в строке. а все послеующие - символи строки
Код:
struct PascalString {
byte len;
char[len] data;
}
где-то так
Разница между Pascal String  и С\С++ String в том что паскаль хранит явно длинну строки в 0-м байте
а С\С++ неявно в виде признака конца строки null-terminated string
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Март 04, 2010, 20:28 »

что такое "паскалевская строка"?
Код:
typedef unsigned char Str255[256];  // MacTypes.h
Нет 0-терминатора, длина в 1-м байте
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Март 05, 2010, 07:15 »

Считай в QString и удали нулевой символ.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ритт
Гость
« Ответ #7 : Март 06, 2010, 02:07 »

< классическая строка - массив типа char с нуль-терминантой
Записан
Dizzy
Гость
« Ответ #8 : Март 10, 2010, 11:38 »

можно почитать про кодеки ( setCodecCString и т.д. )
использовать соответствующие ф-ции QString::fromUtf8 и др.

Да, кодеки помогли. А строку действительно пришлось читать как

Паскалевская строка(класическая) - масив байтов (т.е. char-ов ) от 1 до N где на 0-м месте Количество символом в строке. а все послеующие - символи строки
Код:
struct PascalString {
byte len;
char[len] data;
}
где-то так
Разница между Pascal String  и С\С++ String в том что паскаль хранит явно длинну строки в 0-м байте
а С\С++ неявно в виде признака конца строки null-terminated string

Странно что, в Qt нет ничего для работы с паскаль-строками.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Март 10, 2010, 12:27 »

А зачем в Qt/с++ паскалевские строки???
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
SABROG
Гость
« Ответ #10 : Март 10, 2010, 12:33 »

А зачем в Qt/с++ паскалевские строки???

Особенно если их длинна ограничена 256 символами. Это всего-лишь 128 букв русского текста в unicode. Чуть меньше чем длинна sms, которую можно отправить с сайта mts (135 знаков).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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