Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2010, 13:35   #1
adr
новичек
Пользователь
 
Регистрация: 10.01.2010
Сообщений: 28
Восклицание выбор языка программмы

решил попробовать в программа сделать пользовательский выбор языка программы. Создал 2 текстовых файла с разширением *.lng. написал вот этот код
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IniFiles;

type
  TMainFRM = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainFRM: TMainFRM;
  IniFile: TIniFile;
  IniFile1: TIniFile;
  text: string;
implementation

uses Unit1;

{$R *.dfm}


procedure TMainFRM.Button1Click(Sender: TObject);
begin
SettingsFRM.Show;
end;

procedure TMainFRM.FormCreate(Sender: TObject);
begin
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Settings.ini');
Edit1.Text:=IniFile.ReadString('Language info', 'Language', 'Error');
if Edit1.Text='English' then
IniFile1:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'en.lng')
else
IniFile1:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'rus.lng');
end;

procedure TMainFRM.FormShow(Sender: TObject);
begin
Button1.Caption:=IniFile1.ReadString('', 'settings', '');
MainFRM.Caption:=IniFile1.ReadString('', 'programm', '');
end;

end.
Проверка языка проходит, а дальше ноль, т.е. на рамке программы и на кнопке не появляются названия. Помогите и подскажите что не так.


Заранее спасибо
adr вне форума Ответить с цитированием
Старый 09.04.2010, 13:49   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Посмотрите:
ExtractFilePath(Application.ExeName )+'Settings.ini'
Верно ли здесь формируется путь? Может слешек надо?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 09.04.2010, 13:55   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...а должны появлятся?
Код:
ReadString('', '
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 09.04.2010, 14:14   #4
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Посмотрите:
ExtractFilePath(Application.ExeName )+'Settings.ini'
Верно ли здесь формируется путь? Может слешек надо?
Не, всё ОК
ExtractFilePath возвращает путь, оканчивающийся слешем.
Altera вне форума Ответить с цитированием
Старый 09.04.2010, 16:14   #5
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Не знаю почему у вас не работает, но вот это точно не повредит:

Код:
IniFile.Free;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 09.04.2010, 16:26   #6
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Может все же нужно указать секцию окуда брать значения? (как уже заметил raxp)

Код:
Button1.Caption:=IniFile1.ReadString('секция', 'settings', '');
MainFRM.Caption:=IniFile1.ReadString('секция', 'programm', '');
evgn вне форума Ответить с цитированием
Старый 09.04.2010, 17:36   #7
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Да кто ж так с ini-шкой работает ?!?!!!
Автор ! Про INI-файлы 1024 раза уже было на форуме !!! Ищи ! И все поймешь.
Но для начала почитай предыдущие ответы, запомни их - пригодится.

P.S.
От себя скажу немного :
после каждого TIniFile.Create() всегда после каких-то операций не забывай IniFile.Free - и увидишь насколько меньше станет непоняток как в данном коде.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 11.04.2010, 11:46   #8
adr
новичек
Пользователь
 
Регистрация: 10.01.2010
Сообщений: 28
По умолчанию

Все, я нашел проблему. дело в том что код проверял наличие файла ru.lng а у меня он оказывается назывался rus.lng сейчас переименовал и все показывает
adr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор языка blackz Свободное общение 10 15.05.2010 17:07
Выбор языка? MYTO Свободное общение 18 30.03.2010 17:35
Выбор языка С++ или C# nchameleon Общие вопросы C/C++ 7 10.01.2010 20:42
выбор языка программирование ArniLand Помощь студентам 2 27.06.2009 12:17
Выбор языка программирования true_men_new Помощь студентам 1 12.01.2009 13:06