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

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

14.10.2011, 10:46. Показов 8430. Ответов 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
Ответ Создать тему
Новые блоги и статьи
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru