Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> INI Files, Как сохранить ини в кодировке UTF-8 ??? 
:(
    Опции темы
Lence
Дата 20.11.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: 3
Всего: 3



Программа сохраняет данные в ини файл 
по умолчанию он сохраняется в ANSI
Необходимо сделать так чтоб файл сохранялся в UTF-8 кодировке
и сделать так чтоб при загрузки ини файла - Edit' ы которые будут отображать/писать  данные тоже были в utf-8
потому что будут использоваться не стандартные символы ... 


вопрос - как это все организовать ???? 

В поиске много все написано - но не соображу каким образом это можно применить к себе.... 
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Yanis
Дата 20.11.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Lence @  20.11.2006,  17:27 Найти цитируемый пост)
вопрос - как это все организовать ???? 

Сделать наследника, который будет конвертировать Ansi строки в unicode. INI основан на ANSI.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Lence
Дата 20.11.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: 3
Всего: 3



Цитата(Yanis @  20.11.2006,  16:57 Найти цитируемый пост)
Цитата(Lence @  20.11.2006,  17:27 )вопрос - как это все организовать ???? Сделать наследника, который будет конвертировать Ansi строки в unicode. INI основан на ANSI.


Как сделать???? 
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Yanis
Дата 20.11.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Lence @  20.11.2006,  17:59 Найти цитируемый пост)
Как сделать????

Код
TUnicodeIniFile = class(TIniFile)



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Lence
Дата 20.11.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: 3
Всего: 3



Yanis
я не свосем понимаю что дальше делать .... 

вот пример что у меня сейчас 

Код

// сохранение 
var
  sIniFile: TIniFile;
 w: string;

begin
 w:= ExtractFilePath(paramstr(0));
       sIniFile := TIniFile.Create(w+ 'Settings.ini');
        sIniFile.WriteString('Owner','Owner',Edit22.Text);
       sIniFile.WriteString('Owner','Responsible',Edit23.Text);
       sIniFile.WriteString('Owner','ResponsibleAppointment',Edit24.Text);
       sIniFile.WriteString('Owner','Executor',EditText);
       sIniFile.WriteString('Owner','ExecutorAppointment',Edit26.Text);
       sIniFile.WriteString('Owner','Country',Edit27.Text);
       sIniFile.WriteString('Owner','City',Edit28.Text);
       sIniFile.WriteString('Owner','Address',Edit29.Text);
       sIniFile.WriteString('Owner','Phone',Edit30.Text);
       sIniFile.WriteString('Owner','Fax',Edit31.Text);
       sIniFile.WriteString('Owner','Email',Edit32.Text);
       sIniFile.WriteString('Owner','Web',Edit33.Text);
       sIniFile.Free;




Код

// загрузка
var
  sIniFile: TIniFile;
 w: string;

begin
w:= ExtractFilePath(paramstr(0));
       sIniFile := TIniFile.Create(w+ 'Settings.ini');
       Edit22.Text:= sInifile.ReadString('Owner','Owner',Edit22.Text);
       Edit23.Text:= sInifile.ReadString('Owner','Responsible',Edit23.Text);
       Edit24.Text:= sInifile.ReadString('Owner','ResponsibleAppointment',Edit24.Text);
       Edit25.Text:= sInifile.ReadString('Owner','Executor',Edit25.Text);
       Edit26.Text:= sInifile.ReadString('Owner','ExecutorAppointment',Edit26.Text);
       Edit27.Text:= sInifile.ReadString('Owner','Country',Edit27.Text);
       Edit28.Text:= sInifile.ReadString('Owner','City',Edit28.Text);
       Edit29.Text:= sInifile.ReadString('Owner','Address',Edit29.Text);
       Edit30.Text:= sInifile.ReadString('Owner','Phone',Edit30.Text);
       Edit31.Text:= sInifile.ReadString('Owner','Fax',zEdit31.Text);
       Edit32.Text:= sInifile.ReadString('Owner','Email',Edit32.Text);
       Edit33.Text:= sInifile.ReadString('Owner','Web',Edit33.Text);
    end;


что мне сделать чтоб сохранялось в UTF-8 и при загрузке Edit отображали в UTF-8 


--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Yanis
Дата 20.11.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Lence @  20.11.2006,  18:38 Найти цитируемый пост)
что мне сделать чтоб сохранялось в UTF-8 и при загрузке Edit отображали в UTF-8

Стандартные VCL контролы не поддерживают unicode.
По ходу дела, придётся создавать собственный класс для работы с ini и использовать unicode-версии функций WritePrivateProfileStringW/GetPrivateProfileStringW.

Это сообщение отредактировал(а) Yanis - 20.11.2006, 18:53


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Lence
Дата 20.11.2006, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: 3
Всего: 3



C компонентами разобрался ... 
здесь компонент поддерживающий unicode
теперь проблема в том как это все сохранить в ини файл в Unicode - а то у меня сохраняется с вопросами ... и при открытии снова уже не показывается unicode - а вопросы .... 
В общем - как ИНИ файл заставить сохранться в unicode ???? 
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Sirius_Lampochkin
Дата 26.11.2006, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Вопрос очень срочный, помогите!!!

Интересуюсь первой частью вопроса, а именно 
Цитата

что мне сделать чтоб сохранялось в UTF-8

Уточняю: беру обычную ansi-строку, применяю функцию AnsiToUtf8() и результат хочу сохранить в файл в UTF8. После необходимо все это как-то считать и получить ту же самую ansi-строку.


Как? Чем? Лучше всего с примером. 
Вопрос очень срочный, помогите!!!


PM MAIL   Вверх
Sunvas
Дата 26.11.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Sirius_Lampochkin @  26.11.2006,  16:31 Найти цитируемый пост)
После необходимо все это как-то считать и получить ту же самую ansi-строку.

Ну, дык ситываешь, потом перекодируешь функицей Utf8ToAnsi.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Sirius_Lampochkin
Дата 26.11.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



использую 
Код

var
  chars: array [0..255] of char;
  str :string;
  i: integer;
 
......

str := ansitoutf8('игра');
for i:=0 to length(str) do 
  chars[i]:=str[i];

WritePriviteProfileString('menu','game',chars,'c:\menu.ini');


но в файл пишется только: 

[menu]
game=

и после равно пусто! (((
PM MAIL   Вверх
Sirius_Lampochkin
Дата 26.11.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



так кажись чего-то получается )  тьфу-тьфу-тьфу, да поможет мне шаманский бубен.


использую StringToWideChar, WritePrivateProfileStringW и обратные им. 

PM MAIL   Вверх
Alexeis
Дата 26.11.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Lence, не мучайтесь, пишите строку как буфер данных, типа 
IniFile.WriteBinaryStream();



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
mogikan
Дата 15.2.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.6.2006

Репутация: нет
Всего: нет



С етих файлах можно решит проблему

Присоединённый файл ( Кол-во скачиваний: 91 )
Присоединённый файл  TntIniFiles.rar 6,61 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1181 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.