![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибочка [D7, WinXP]
qqq2 © (2005-03-06 01:56:00)Вот уже как 2 дня пытаюсь выяснить в чем проблема!
Пишу прогу, которая при клике по item в popup меню в RichEdit загружает файл, причем имя загружаемого файла хранится в ini файле.
INI файл представляет из себя такой вид:
[Название секции]
file = FILE_NAME.TXT
INFO = bla bla bla
Так вот, caption popup меню по котрому кликаю соответсвует названию секции, т.е. если юзер кликнул по элементу меню с заголовком "Название секции"
то из секции "Название секции" берем имя файл которое хранится в параметре file. Проблема заключается в том, что выскакивает ошибка из-за
того, что не найден файл т.к. непраильно указано имя секции => невозможно получить имя файла.
Вот так я вставляю в popup меню имена всех секций:
procedure TForm1.FormShow(Sender: TObject);
var
D: TStrings;
s: integer;
ini: TIniFile;
begin
form1.menu.Items.Clear;
ini := TIniFile.Create(ExtractFilePath(application.ExeName) + 'db.ini');
D := TStringList.Create;
ini.ReadSections(D);
for s := 0 to D.Count - 1 do
begin
form1.menu.Items.Add(NewItem(d.Strings[s], 0, False, True, form1.OpenHistoryFile, 0, 'Item1'));
end;
end;
Это все работает.
Дальше.
Процедура OpenHistoryFile
procedure TForm1.OpenHistoryFile(Sender: TObject);
var
s, p, l,color: string;
ini: TIniFile;
begin
ini := TIniFile.Create(ExtractFilePath(application.ExeName) + 'db.ini');
s := (Sender as TMenuItem).Caption;
p := ini.ReadString(s, 'file', '');
l := ExtractFilePath(application.ExeName) + 'db/' + p;
edit.Lines.loadfromfile(l);
CurrentFile := l;
end;
Т.е. эта процедура должна загружать файл взятый из секции с именем == заголовку item'а по которому кликнул юзер, но вот тут
что-то не то! Ошибка млин выскакивает. Он типа не может прочитать параметр file т.к. не находит секцию с таким именем. В чём может проблема быть?
Набережных С. (2005-03-06 07:13:00) [1]
> qqq2 (06.03.05 01:56)
А посмотреть, что в s после s := (Sender as TMenuItem).Caption?
Бендер не велел?
GanibalLector (2005-03-06 02:18:00) [2]> form1.menu.Items.Add(NewItem(d.Strings[s], 0, False, True, form1.OpenHistoryFile, 0, 'Item1'));
Позвольте узнать глубокий смысл form1? Он там лишний!
GanibalLector (2005-03-06 02:16:00) [3]А проблема всего лишь в св-вах Popup ;)
PopupMenu1.AutoHotkeys:=maManual;
у тебя вероятно стоит maAutomatic