![]() |
*Решено* | Структура OpenFileName на Delphi
Доброго всем времени суток!
Значит конкретно интересует поле lpstrFilter указанной структуры. Типа аналогия чисто дельфийскому варианту: Код:
OpenDialog1.Filter := 'Executables|*.exe'; К примеру,на MSDN предлагают написать так: Код:
ofn.lpstrFilter = "Executables\0*.exe\0"; |
ЕМНИП есть такое: Chr(0)
Т.е. ofn.lpstrFilter = "Executables" + chr(0) + "*.exe"; |
ИМХО:
1) вместо Chr(number), где number - некоторая целая константа, удобнее использовать конструкцию #number , хотя бы потому, что она не требует знака сложения до/после и высчитывается на этапе компиляции. 2) т.к. lpstrFilter указывает на пары нуль-терминантных строк, то оканчиваться должен двумя нулями. итог: ofn.lpstrFilter := 'Executables'#0'*.exe'#0#0; |
Savant
Цитата:
В очередной раз говорю тебе : "Спасибо!" :) . |
Ммм... А если я подгружаю строку из ресурса программы? Как же мне поступить?
Использую PChar(переменная из var) допустим для lpstrTitle. А вот как тут как? Строковый ресурс примерно такой: Код:
STRINGTABLE |
Должно быть что-то в этом роде:
Код:
"Executables",0,"*.exe",0,"DLLs",0,"*.dll",0,0 Код:
'Executables'#0'*.exe'#0'DLLs'#0'*.dll'#0#0 Каждая пара означает определённый фильтр. Каждая строка в буфере должна заканчиваться нулём. После последней строки идёт двойной нуль. |
Попробовал создать ресурс так:
Код:
STRINGTABLE Код:
..... |
Maksim V
А можно спросить: Зачем так извращаться?? Почему нельзя параметры фильтра настроить по-человечески, т.е. во время заполнения структуры в самой программе?? |
Эээ... Это как так? Можно пример?
|
Цитата:
Код:
var Кстати,если эти массивы не забить нулями(например,когда массивы находятся в процедуре как локальные переменные),то могут возникнуть глюки с вызовом функции GetOpenFileName. Просто дело в том,что в начало массива pathFile,например,можно поместить строку с названием файла.Тогда это название будет отображено в поле Edit диалога открытия файла.Если же там будет какой-то бред в начале,то тогда будут и баги. А вообще я это ещё не проверял,но скорее всего так оно и есть(на MSDN так сказано). |
Ну вы видимо мня не поняли. Мне надо просто было брать типы файлов для фильтра из строковой таблицы в ресурсах. А вы опять привели пример фильтра, когда типы файлов указаны в самом коде. Согласитесь не очень удобно будет локализовывать приложение - заново перекомпилировать. А тут через любой редактор ресурсов подправил и никаких проблем. :)
|
Время: 19:27. |
Время: 19:27.
© OSzone.net 2001-