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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2008, 12:35   #1
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию Помогите найти ошибку

Помогите найти ошибку, всё работает прекрасно, только вылетает сообщение об ошибки: Access violation at address...
Код:
var
  inif:tinifile;
  s:string;
begin
  inif:=TiniFile.Create(ExtractFilePath(paramstr(0))+'lang.ini');
  mainmenu1.Items.Find('File').Caption:=inif.ReadString(s, 'File', 'File');
  mainmenu1.Items.Find('Help').Caption:=inif.ReadString(s, 'Help', 'Help');
  inif.free;
end;
И еще оди вопрос:
Есть PopupMenu вот такая структура:
File
-New
-Exit
Как изменить Caption File на Файл я знаю а как изменить New на Новый?

P.S. это моё 100 сообщение.
Карп преодолевший водопад становится драконом.

Последний раз редактировалось N!ckeL; 05.05.2008 в 13:12.
N!ckeL вне форума Ответить с цитированием
Старый 05.05.2008, 12:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так пробуй:
Код:
var   
  inif:tinifile;   
  s:string;m:TmenuItem;   
begin   
  inif:=TiniFile.Create(ExtractFilePath(paramstr(0))+'lang.ini');   
  m:=mainmenu1.Items.Find('File');
   if m<>nil then m.Caption:=inif.ReadString(s, 'File', 'File');   
  m:=mainmenu1.Items.Find('Help');
    if m<>nil then m.Caption:=inif.ReadString(s, 'Help', 'Help');   
  inif.free;   
end;
Цитата:
а как изменить New на Новый?
Получить нулевой Item mainMenu потом нулевой item полученного, и приствоить его caption'ну нужное значение
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2008, 12:48   #3
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Stilet, спасибо, помог, а по поводу 2-го вопроса кто нибудь знает?
Цитата:
Вопрос:
Есть PopupMenu вот такая структура:
File
-New
-Exit
Как изменить Caption File на Файл я знаю а как изменить New на Новый?
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 05.05.2008, 12:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Дык я ж ответил вроде - читай мой пост в конце
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2008, 13:01   #5
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Цитата:
Дык я ж ответил вроде - читай мой пост в конце
Сорри не заметил;

Код:
m:=mainmenu1.Items[0];
  if m<>nil then m.Items[0].Caption:='Новый';
Опять эта ошибка вылазит..
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 05.05.2008, 13:31   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну тогда так.
Код:
if (m<>nil)and(m.Items[0]<>nil) then m.Items[0].Caption:='Новый';
Хотя это уже говорит о неверной стратегии...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2008, 13:47   #7
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Код:
  m:=mainmenu1.Items[0];
  if (m<>nil)and(m.Items[0]<>nil) then m.Items[0].Caption:='Новый';
не работает, опять вызывает ошибку.. У меня вообщем есть программа я хочу вписать в *.ini разные языки, поэтому требуется менять Caption у mainmenu1.
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 05.05.2008, 13:52   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

На какой строке то ошибка?
Код можеш весь выложить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2008, 14:01   #9
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Вот структурва config.ini:
[other]
language=Русский

Вот структурва lang.ini:
[Русский]
File=Файл
New=Новый
Help=Помощь

Вот код:
Код:
private 
 cfg, lng:TIniFile;
 procedure SelectLNG(lang:string); //lang - сюда пишем название языка

....................................................

procedure TMainForm.FormShow(Sender: TObject);
begin 
 cfg:=TIniFile.Create(ExtractFilePath(paramstr(0))+'config.ini');
  if MainForm.cfg.ReadString('Other', 'Language', 'English')<>'English' then
   begin
    SelectLNG(MainForm.cfg.ReadString('Other', 'Language', 'English'));
   end;
 cfg.free;
end;

procedure TMainForm.SelectLNG(lang: string);
var
  m:TmenuItem;
begin
  lng:=TiniFile.Create(ExtractFilePath(paramstr(0))+'lang.ini');
  m:=mainmenu1.Items.Find('File');
   if m<>nil then m.Caption:=lng.ReadString(lang, 'File', 'File');
  m:=mainmenu1.Items.Find('Help');
    if m<>nil then m.Caption:=lng.ReadString(lang, 'Help', 'Help');
  m:=mainmenu1.Items[0];
  if (m<>nil)and(m.Items[0]<>nil) then   // Вот здесь ошибка
m.Items[0].Caption:=lng.ReadString(lang, 'New', 'New'); // и вот здесь ошибка
  lng.free;
end;
Карп преодолевший водопад становится драконом.

Последний раз редактировалось N!ckeL; 05.05.2008 в 14:06.
N!ckeL вне форума Ответить с цитированием
Старый 05.05.2008, 14:15   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот мой пример:
Код:
unit Unit1;

interface

uses            inifiles,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Menus;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    q1: TMenuItem;
    N11: TMenuItem;
    N21: TMenuItem;
    N31: TMenuItem;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public      lng:TIniFile;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);
const lang='Русский';
var
  m:TmenuItem;
begin
  lng:=TiniFile.Create(ExtractFilePath(paramstr(0))+'file1.txt');
  m:=mainmenu1.Items.Find('File');
   if m<>nil then m.Caption:=lng.ReadString(lang, 'File', 'File');
  m:=mainmenu1.Items.Find('Help');
    if m<>nil then m.Caption:=lng.ReadString(lang, 'Help', 'Help');
  m:=mainmenu1.Items[0];   
  if (m<>nil)and(m.Items[0]<>nil) then  
m.Items[0].Caption:=lng.ReadString(lang, 'New', 'New');
  lng.free;
end;

end.
Вот ИНИ файл:
Код:
[Русский]
File=Файл
New=Новый
Help=Помощь
Ошибок нет. Работает все стабильно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите найти ошибку Максим_Леонидович БД в Delphi 4 20.08.2008 23:23
Помогите найти ошибку ( с++ ) JOFRIF Помощь студентам 10 23.05.2008 14:34
Помогите найти ошибку KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 1 11.04.2008 15:48
Помогите найти ошибку Рената Паскаль, Turbo Pascal, PascalABC.NET 2 05.01.2008 04:29
help!!! Помогите найти ошибку!!! linker13 Общие вопросы Delphi 2 07.07.2007 23:15