Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/37: Рейтинг темы: голосов - 37, средняя оценка - 4.97
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

DLL как контейнер языковых файлов

14.10.2011, 10:46. Показов 8482. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро! Прошу совета у опытных программистов!
Разумно ли использовать DLL как контейнер языков приложения?
Если да то помогите осуществить таккак я с DLL не работал.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2011, 10:46
Ответы с готовыми решениями:

Использование dll как контейнер для файлов в builder 6
Пишу игру. Нужно спрятать BMPшные картинки в dll и прямо оттуда их загружать в Image. Как это реализовать именно в 6'ом builder'е?

DLL, как контейнер изображений.
Тут прилеплена тема DLL, как контейнер изображений. На скриншоте показано окно с параметрами добавленного изображения(там идентификатор...

Builder 6. DLL, как контейнер для изображений
Вот в этой статье все замечательно расписано про DLL как контейнер для изображений. Возможно глупый вопрос, но в С++ Builder 6 этот процесс...

53
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.10.2011, 21:30
Студворк — интернет-сервис помощи студентам
Programmer., повторение - мать учения , я вот тоже не так давно удалил папку с готовой программой и всеми исходниками , прохая привыка при удалении зажимать SHIFT .
2
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
20.10.2011, 22:28
LK,
всё равно напишу заного... Мне что жалко знаеш, Вот ты помниш ранше мне сказал, когда я начал учить АПИ чтоб создать папку апи и хранить внем всё что Я достану, Статий, Примеры и т.д, Вот ето всё тоже потеряно... Я примерно 1 год соберал примеров... вот шас всё потеряно (Кроме того чего я месяц 3 назад записал на диске, ето меня радует, болше всего)... ;(

К стати Samrisbe, Я же всё равно заного пишу прог, вот и буду использовать ини файлов для хроненые языков
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.10.2011, 22:30
Programmer., система винт опознает или он даже не крутится ?
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
20.10.2011, 23:09  [ТС]
Flyer немогу тебя обрадовать, я пару часов повозился с твоим способом результат "0" если сам не сможеш сделать то что хочеш тогда я кидаю свой исходник с примером как я загружаю языковые файлы, по мне так очень даже сносно.
Мое мнение такое что для чтения параметра с ини лучше не посылать переменную.

Programmer даже не парься об утраченом, главное что источники информации не потерялись и что у тебя есть интернет чтоб до ресурсов добраться.
И еще есть друзья которые не утратились вместе с венчестером.
Я во избежания утери наработанного регулярно копирую все на MicroSD с объемом памяти 32G, в запароленных архивах, и в случае утери врятли ктото будет архивы с названиями семейные фоты взламывать, кстати чем удобно MicroSD так ето тем что он у меня в телефоне и всегда ссобой.
Миниатюры
DLL как контейнер языковых файлов  
Вложения
Тип файла: rar Смена Языка програмно.rar (1.36 Мб, 31 просмотров)
2
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.10.2011, 23:13
надеюсь, телефон на желеной цепи... тьфу-тьфу-тьфу...
2
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
20.10.2011, 23:26  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
надеюсь, телефон на желеной цепи... тьфу-тьфу-тьфу...
На цепи с охранной системой.
Миниатюры
DLL как контейнер языковых файлов  
1
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
20.10.2011, 23:50
да что с параметром, что без него, не читает все равно
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
20.10.2011, 23:58  [ТС]
Цитата Сообщение от Flyer Посмотреть сообщение
да что с параметром, что без него, не читает все равно
А тебе принципяльно чтоб один языковой файл был?
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
21.10.2011, 01:02
желательно конечно один, ну да все таки.
не работает даже так:
C++
1
2
3
4
 RadioGroup1->Caption = ini->ReadString("En", "Group_name", "");
  RadioGroup1->Items->Strings[0] = ini->ReadString("En", "Option1", "");
  RadioGroup1->Items->Strings[1] = ini->ReadString("En", "Option2", "");
  RadioGroup1->Items->Strings[2] = ini->ReadString("En", "Option3", "");
ини файл
[En]
Group_name=Language
Option1=English
Option2=Ukrainian
Option3=Russian
и это меня не радует

Добавлено через 9 минут
ууу, я заставил это работать. правда бредовая проблема оказалась. если ини файл лежит в одной папке с ехе то не работает ни в какую, но если положить его в другую папку то работает оО
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
24.03.2012, 22:04
Только сегодня случайно напал на вашу чрезвычайно интересную полемику.
И хочу предложить свой, самопальный, может быть не шибко системный, подход к решению этой проблемы, придуманый еще на заре эры ПК.
Есть текстовой файлик, скажем ru.t со строками в формате "kod Текст"
В начале работы своей программы я его загружаю в некую структуру, типа vector (тоже самопальную). И есть функция char *tx(char *kod). Все это, и загрузка, и функция tx расположены в одном модуле, так что остальным нет до этого никакого дела. Когда требуется текст в каких-то других модулях, он достается просто вызовом tx(kod)
Примеры:
C++
1
2
3
Button1->Caption = tx("B1");
MenuItem5->Caption = tx("M5");
ListBox1->Items->Add(tx("TraTaTa"));
Дальше, надеюсь понятно?
Для другого языка - en.t, esti.t, bulgar.t ...
Идея, принадлежащая LK о том, что имя файла текстов можно запрятать в ini, мне как-то в голову не пришла, хотя она очень здравая. При этом мне ничего не стоит при смене языка этот файл тут же перезагрузить.
Еще один плюс - если заказчику не слишком нравятся тексты, я тут же, на его столе их меняю БЕЗ ПЕРЕТРАНСЛЯЦИИ, да он и сам это может.
Там еще пара заморочек, облегчающих жизнь, если интересно - расскажу.
Для t-файла в 1000 строк никакого ощущения, что время уходит напрасно, не возникало, хотя поиск линейный. Впрочем, ничего стоит отсортировать "вектор" по кодам и искать бинарно.
Объем модуля - около 100 строк (с заморочками). Язык - чистый Си.
2
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
26.03.2012, 20:01
Вот такой вот длинный код у меня для английского языка

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
{
Ini->WriteBool("Face", "ENG", CheckBox2->Checked);
{
 if (CheckBox2->Checked==true){CheckBox1->Checked=false;}
 TIniFile *Ini = new TIniFile("LNG/ENG.lng");
  Form1->Button1->Caption = Ini->ReadString("Buttons","Button1","");
  Form1->Button2->Caption = Ini->ReadString("Buttons","Button2","");
  Form1->Button3->Caption = Ini->ReadString("Buttons","Button3","");
  Form1->Button4->Caption = Ini->ReadString("Buttons","Button4","");
  Form1->Button5->Caption = Ini->ReadString("Buttons","Button5","");
  Form1->Label1->Caption = Ini->ReadString("Labels","Label1","");
  Form1->Caption = Ini->ReadString("Captions","Caption1","");
  Form1->N1->Caption = Ini->ReadString("PopupMenu","N1","");
  Form1->N2->Caption = Ini->ReadString("PopupMenu","N2","");
  Form1->N3->Caption = Ini->ReadString("PopupMenu","N3","");
  Form1->N4->Caption = Ini->ReadString("PopupMenu","N4","");
  Form1->N5->Caption = Ini->ReadString("PopupMenu","N5","");
  Form1->N6->Caption = Ini->ReadString("PopupMenu","N6","");
  //
  AVIR->Caption = Ini->ReadString("CaptionsAVIR","Caption1","");
  AVIR->Button1->Caption = Ini->ReadString("ButtonsAVIR","Button1","");
  AVIR->Button2->Caption = Ini->ReadString("ButtonsAVIR","Button2","");
  AVIR->Label1->Caption = Ini->ReadString("LabelsAVIR","Label1","");
   //
  iam->Caption = Ini->ReadString("CaptionsIam","Caption1","");
  iam->Label1->Caption = Ini->ReadString("LabelsIam","Label1","");
  iam->Label2->Caption = Ini->ReadString("LabelsIam","Label2","");
  iam->Label3->Caption = Ini->ReadString("LabelsIam","Label3","");
  //
  spisok->Caption = Ini->ReadString("CaptionsSpisok","Caption1","");
  spisok->Label1->Caption = Ini->ReadString("LabelsSpisok","Label1","");
  spisok->Label2->Caption = Ini->ReadString("LabelsSpisok","Label2","");
  spisok->Label3->Caption = Ini->ReadString("LabelsSpisok","Label3","");
  spisok->Button1->Caption = Ini->ReadString("ButtonsSpisok","Button1","");
  spisok->Button2->Caption = Ini->ReadString("ButtonsSpisok","Button2","");
  spisok->Button3->Caption = Ini->ReadString("ButtonsSpisok","Button3","");
 //
 Settings->Caption = Ini->ReadString("CaptionsSettings","Caption1","");
 Settings->Button1->Caption = Ini->ReadString("ButtonsSettings","Button1","");
 Settings->Button2->Caption = Ini->ReadString("ButtonsSettings","Button2","");
 Settings->Button3->Caption = Ini->ReadString("ButtonsSettings","Button3","");
 Settings->CheckBox1->Caption = Ini->ReadString("CheckBoxsSettings","CheckBox1","");
 Settings->CheckBox2->Caption = Ini->ReadString("CheckBoxsSettings","CheckBox2","");
 Settings->CheckBox3->Caption = Ini->ReadString("CheckBoxsSettings","CheckBox3","");
 Settings->CheckBox4->Caption = Ini->ReadString("CheckBoxsSettings","CheckBox4","");
 Settings->CheckBox5->Caption = Ini->ReadString("CheckBoxsSettings","CheckBox5","");
 Settings->CheckBox6->Caption = Ini->ReadString("CheckBoxsSettings","CheckBox6","");
 Settings->CheckBox7->Caption = Ini->ReadString("CheckBoxsSettings","CheckBox7","");
 Settings->CheckBox8->Caption = Ini->ReadString("CheckBoxsSettings","CheckBox8","");
 Settings->CheckBox9->Caption = Ini->ReadString("CheckBoxsSettings","CheckBox9","");
 Settings->Label1->Caption = Ini->ReadString("LabelsSettings","Label1","");
 Settings->Label2->Caption = Ini->ReadString("LabelsSettings","Label2","");
 //
  Face->Caption = Ini->ReadString("CaptionsFace","Caption1","");
  Face->Label1->Caption = Ini->ReadString("LabelsFace","Label1","");
  Face->Label2->Caption = Ini->ReadString("LabelsFace","Label2","");
  Face->Label3->Caption = Ini->ReadString("LabelsFace","Label3","");
  Face->Label4->Caption = Ini->ReadString("LabelsFace","Label4","");
 Face->CheckBox1->Caption = Ini->ReadString("CheckBoxsFace","CheckBox1","");
 Face->CheckBox2->Caption = Ini->ReadString("CheckBoxsFace","CheckBox2","");
}
А можно ли для русского(по умолчанию он)Упростить его?Что бы к примеру
C++
1
2
if (CheckBox1->Checked==true){CheckBox2->Checked=false;}
default settings
Восстанавливалось значения языка прописанные по умолчанию (НЕ С INI файла )
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
26.03.2012, 20:05
Упростить можно, сделав функции загрузки для каждого языка
C++
1
2
if (CheckBox1->Checked==true){CheckBox2->Checked=false;}
Russian(); // можно обозвать функцию и default_settings()
Но писать в функции код загрузки языковых строк все же придется.
0
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
26.03.2012, 22:21
Цитата Сообщение от Flyer Посмотреть сообщение
ну как вариант ини файлы.
TIniFile и TMemIniFile
Для примера, в ини файле у тебя такое
[En] //англ секция
Caption=Blablabla // key=value
[Ru] //рус секция
Caption=блаблабла
Вопрос: а что, есть компоненты, чтобы быстро считать стандартный ini-файл? У меня такого нет. Подскажите, откуда их можно взять
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
26.03.2012, 22:38
Класс TIniFile
http://www.delphisources.ru/pa... _exam.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2012, 22:38

DLL - контейнер текстовых файлов, как редактировать текст?
Есть DLL, в которую вложены текстовые файлы в качестве ресурсов. Кроме ресурсов в DLL нет ничего, т.е. это DLL-контейнер. Чтение текста...

Контейнер для файлов
Всем привет, у меня вопрос. Вот у меня есть файл формата допустим *.dat, как мне в этот файл засунуть файлы формата допустим *.jpg? ...

Как скомпились dll из нескольких файлов сразу?
Здраствуйте уважаемые знатоки. У меня есть несколько .cs, один .csproj и даже два файла справки .chm. Можно ли все это закомпилить в...

Восстановление dll файлов поврежденных вирусами "точка входа в процедуру _wcsupr_s не найдена в библиотеке dll
точка входа в процедуру _wcsupr_s не найдена в библиотеке dll ntdll.dll вирусы повредили файл библиотек после установки help dll...

Как получить имена Dll файлов из таблицы импорта
Добрый день. Нужно получить имена Dll файлов из таблицы импорта и при этом иметь возможность заблокировать запуск приложение....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
54
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru