Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многоязычное приложение 
:(
    Опции темы
RatHat
Дата 30.3.2010, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



SenkraD, строка номер 3 - "{"
Уверен, что это бред?smile))
Придерживайся нумерации, которую делает подсветка кода. Иначе рискуешь быть непонятым ;-) 


DCamer, 
Код

AnsiString IniFileName = ExtractFileDir(Application->ExeName) + "\\settings.ini";
TIniFile *Settings = new TIniFile(IniFileName);


Каюсь, виноват, Гейтс попутал...

Это сообщение отредактировал(а) RatHat - 30.3.2010, 16:05
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 30.3.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



RatHat, теперь уже корень диска C  smile 
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
SenkraD
Дата 30.3.2010, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а так?
Код
std::string applicationPath(void)
{
    char modulePath[MAX_PATH] = { 0 }; 
    if (modulePath[0] == '\0')
    {
        if (!GetModuleFileName(NULL, modulePath, MAX_PATH))
        {
            throw std::runtime_error("Can't get application path");
        }
    }
    std::string path = modulePath;
    std::size_t pos = path.find_last_of("/\\");
    return path.substr(0, pos);
}

//...
std::string fileName = applicationPath() + "\\settings.ini";
TIniFile *Settings = new TIniFile(fileName.c_str());



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
RatHat
Дата 30.3.2010, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



SenkraD, так я ж написал...ExtractFileDir(Application->ExeName).  
Оно тоже работает. И вообще, не пугай человека STL'ем smile 
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 30.3.2010, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



RatHat, вот теперь в активную папку приложения сохранился, спасибо.
Так-с, это было одна из не правильных функций, вот вторая:
Код
void __fastcall TForm3::SaveChgClick(TObject *Sender)
{
 AnsiString IniFileName =  ExtractFileDir(Application->ExeName) + "\\settings.ini";
 TIniFile *Settings = new TIniFile(IniFileName); // конфигурационный файл программы.
 Settings->WriteString("sys","lang","rus"); // запись в кофигурационный файл
 delete Settings;
}

По теории заместо rus должен быть выбранный в настройках язык, однако записывается rus, и выбранный язык не запоминается.

Это сообщение отредактировал(а) DCamer - 30.3.2010, 17:03
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 30.3.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



Во-первых, зачем ты каждый раз получаешь путь к ини-файлу, если тебе надо его получить один раз - при запуске программы, сохранить в какую-нибудь глобальную переменную, а дальше уже работать с ней?

Во вторых, какие именно ты хочешь сохранить изменения-то?

Цитата

По теории заместо rus должен быть выбранный в настройках язык, однако записывается rus


Можно узнать, где ты такую теорию курил?smile
Это при ReadString("sys","lang","rus") у тебя будет считываться значение, которое записано в файл, а если не записано, то будет подставляться значение "по умолчанию".

Код

Settings->WriteString("sys","lang","rus"); //сохранится "rus"

Оно будет записывать то значение, которое ты передашь.
Ты передаёшь константу "rus", очевидно же.

Если ты где-то присвоил глобальной перменной lang (или как там она у тебя называется) значение, которое хочешь сохранить по нажатию кнопки SaveChg, то ты так и пиши:

Код

Settings->WriteString("sys","lang", lang); //сохранится значение переменной lang


Это сообщение отредактировал(а) RatHat - 30.3.2010, 17:10
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 30.3.2010, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



RatHat, Да, но... настройки активны только на текущей сессии, т.е. пока открыто приложение
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 30.3.2010, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



DCamer, то есть, ты хочешь сказать, что когда программа будет запущена в следующий раз, она опять слетит на дефолтный язык? Это же неудобно вообще...
Если бы тебе приходилось винду каждый раз при запуске русифицировать, ты бы офигел же, не правда ли?

При программы старте, на формы этапе создания параметры считывай  языковые из файла конфигурационного, падаван юный. 
И при запуске тогда каждый раз программы твоей язык таким будет же, и при закрытии как.
И да пребудет с тобой Сила!
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 30.3.2010, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



RatHat, Мастер Йода, но основная форма, и форма настроек игнорируют считывание значения конфигурационного файла.))
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 30.3.2010, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



DCamer, ошибся значит в коде где-то ты.
Изменения все ли, писали тебе которые мы, внёс в код ты?
Внёс все если, форма считывать настройки все должна. 
В переменные глобальные настройки эти сохранять должен ты и с переменными работать этими в последствии.
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 30.3.2010, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(RatHat @  30.3.2010,  19:10 Найти цитируемый пост)
Изменения все ли, писали тебе которые мы, внёс в код ты?

Единого все до!
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 30.3.2010, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



DCamer, на Йода-стайл переходить рано тебе, падаван юный :DDD
А свои дописал изменения, касаются глобальных переменных которые?
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 30.3.2010, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(RatHat @  30.3.2010,  19:40 Найти цитируемый пост)
А свои дописал изменения, касаются глобальных переменных которые?

Да, выбранный язык успешно сохраняется в конфигурационный файл
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 30.3.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



DCamer, хм, и при этом при старте программы потом не вычитывается заново? Наверно ты где-то в обработчике FormCreate накосячил.
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 30.3.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



RatHat, он выглядит так:
Код

void __fastcall TForm3::FormCreate(TObject *Sender)
{
 AnsiString IniFileName =  ExtractFileDir(Application->ExeName) + "\\settings.ini";
 TIniFile *Settings = new TIniFile(IniFileName); // конфигурационный файл программы.
 AnsiString lang = Settings->ReadString("sys","lang","rus"); // считывание из конфигурационного файла
 AnsiString FileName = AnsiString("\langs\\msg_" + lang + ".lng"); // языковой файл
 TIniFile *Lang = new TIniFile(FileName);
 LangList->Items->LoadFromFile("\lang.txt");
 delete Settings;
 delete Lang;
}


Это сообщение отредактировал(а) DCamer - 30.3.2010, 19:07
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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