Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1206
от 15.10.2008, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 392, Экспертов: 47
В номере:Вопросов: 5, Ответов: 6

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 146624: Вопрос такой; Какие существую эфективные способы поддержки мультиязычного интерфейса?...
Вопрос № 146644: Здравствуйте уважаемые эксперты, у меня вот такая проблема: Делаю программу-игрушку, что то вроде игры для детей на запоминание предметов и их расположения на доске. Есть матрица из 25 (5х5) компонентов типа DBImage при начале работы они все запо...
Вопрос № 146684: Товарищи эксперты, помогите пожалуста решить задачку. Я думаю. что она простая, но с программированием не дружу вообще, а сдавать и в нашем непрограммистском вузе надо. Ну очень надо!Вся надежда только на вас. Из бинарного файла прочитать симв...
Вопрос № 146712: Можно ли получить время часов CMOS из Windows? Весь Интернет облазил и не нашел, в MSDN Library тоже не нашел. Наткнулся только на информацию о том, что это умеет делать Linux. Но ведь при старте Windows получает время из CMOS, значит это реа...
Вопрос № 146734: Здравствуйте! У меня такая проблема. Нужно запустить определенную программу под ограниченной учетной записью с правами администратора. Так просто программа не запускается. Можно только запустить с правами админа. Можно ли это как нибудь сделать прогр...

Вопрос № 146.624
Вопрос такой; Какие существую эфективные способы поддержки мультиязычного интерфейса?
Отправлен: 09.10.2008, 19:43
Вопрос задал: Романов Александр Вячеславович (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Edwardmm
Здравствуйте, Романов Александр Вячеславович!
Самый простой способ это создать текстовый файл в котором присвоить каждому заголовку в программе название и при запуске считывать их. Соответственно сколько языков столько и файлов. Структура INI файла вполне подойдёт.
Ответ отправил: Edwardmm (статус: 1-ый класс)
Ответ отправлен: 09.10.2008, 20:26
Оценка за ответ: 3
Комментарий оценки:
Меня интересует принцып присваивания, при большом количесве строк получаеться тупое присваивание очень большого числа строк.

Отвечает: Кэр Лаэда
Здравствуйте, Романов Александр Вячеславович!

надеюсь мой способ для вас будет эффективным

как вы знаете у компонентов есть свойство Name
вы можете создать ini файл такого типа
Name=Caption

пример

Label25=Вася
Label26=Петя

делее идет код

вы просто перебираете все компонеты на форме



for I := 0 to Form1.ComponentCount - 1 do
begin

// тут вы берете имя компонента Form1.Components[i].Name и проверяете есть ли он в ini файле. Если есть, то делаете у него другой текст. Надо только помнить, что у одних //компонентов это Text у других Caption , а у третьих еще что нибудь.


end;




---------
Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все
Ответ отправил: Кэр Лаэда (статус: Практикант)
Ответ отправлен: 09.10.2008, 20:48
Оценка за ответ: 5
Комментарий оценки:
Спасибо, хорошее решение и довольно простое в реализации. Как то сам даже неподумал о возможности перебрать все компоненты на форме.


Вопрос № 146.644
Здравствуйте уважаемые эксперты, у меня вот такая проблема:
Делаю программу-игрушку, что то вроде игры для детей на запоминание предметов и их расположения на доске. Есть матрица из 25 (5х5) компонентов типа DBImage при начале работы они все заполнены изображением с однородным фоном (типа незаполненные)
Зытем при нажатии на кнопку «начать игру» они заполняются рандомным образом любым изображением из вспомогательной папки где лежат изображения. И еще 4 DBImage поля для будущей проверки.
Затем по нажатию кнопки «Начать проверку» все картинки закрываются и сбоку появляются 4 окна с возможными изображениями для проверки, затем пользователь выбирает одно из предложенных изображений щелкая на него мышью а затем по закрытым полям DBImage заполняя тем самым их этими картинками.
После нажатия на кнопку «Проверить» программа должна показать число ошибок
Но вот беда она не показывает (тоесть показывает неправильно )
Проверка имеет вид:

procedure TForm1.Button2 Click(Sender: TObject);
var
och,i:byte;
MyComponent: TComponent;
begin
och:=0; //обнуляем число ошибок
for i:=1 to 25 do
begin
MyComponent:=FindComponent('DBImage'+ IntToStr(i)); //перебор элементов
Znache:=TDBImage(MyComponent).Picture; //вытаскиваем картинку из элемента
if not(Znache=ArMatr[i]) then //сравниваем с массивом для проверки
och:=och+1; //считаем ошибки
end;
Label1.Caption:='Ошибок '+ IntToStr(och);
end;
Для справки

Массив ArMatr: Array [1..25]of TPicture;//описан в самом Unit1.pas
//заполняется на шаге «начать игру»
Дело в том что if not(Znache=ArMatr[i]) всегда ложно!
В приложении весь код Unit1.pas
А весь проект можно посмотреть тут:
http://narod.ru/disk/3091468000/programma.rar.html

Приложение: