Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.119.66] |
|
Сообщ.
#1
,
|
|
|
Народ, мне нужно поместить в ресурсы вот такую лабуду:
'Программа (*.exe; *.com)' + #0 + '*.exe; *.com' + #0 + 'Заставка (*.scr)' + #0 + '*.scr' + #0 + 'Текстовый документ (*.txt)' + #0 + '*.txt' + #0 + 'Все файлы (*.*)' + #0 + '*.*' + #0#0 Как это сделать я знаю. Вопрос не в этом. Вопрос в том как прописать в RC-файле - #0 ? |
Сообщ.
#2
,
|
|
|
Как строку ты не пропишешь, так как строка это набор символов с завершающим #0
|
Сообщ.
#3
,
|
|
|
WIN32API, вот так
STRINGTABLE { 101, "Программа (*.exe; *.com)\0*.exe; *.com\0Заставка (*.scr)\0*.scr\0Текстовый документ (*.txt)\0*.txt\0Все файлы (*.*)\0*.*\0\0" } |
Сообщ.
#4
,
|
|
|
Компилируется только до первого "\0". Все что после него - уходит у ночь. Как буд-то дальше ничего нет. Такая проблемка. Я думаю это не цифра, а какая-то буква должна быть... для такого рода переноса.
|
Сообщ.
#5
,
|
|
|
Может, #13?
|
Сообщ.
#6
,
|
|
|
WIN32API, а я вот всю жизнь так делаю и чего-то проблем никогда не возникало . Ну это же синтаксис RC скрипта. Так что поведай: как компилируешь? в чем потом ресурсы смотришь? (если, например в редакторе MSVC++ 6, то он дальше первого нуля не показывает просто, хотя в самом res-файле вся строка целиком лежит). Как потом в проге строку берешь из ресурсов?
Вообще, последовательность такая: компилишь rc-файл любым rc-компилером brcc32.exe myres.rc Получаешь res. Подключаешь его к проге {$R myres.res}. В проге грузишь из ресурса: var lpBuf:array[0..MAX_PATH-1] of char; begin LoadString(hInstance,101,lpBuf,MAX_PATH); .... В lpBuf теперь лежит эта строка. MAX_PATH тут для примера. Можешь сам посчитать точную длинну строки, а лучше (как тут) взять заведомо больший размер. Ну а потом юзаешь строку, как тебе нуно: var ofn:TOpenFileName; begin ... ofn.lpstrFilter := lpBuf; ... |
Сообщ.
#7
,
|
|
|
Наверное из-за функций у меня не пашет:
function LoadStr(ID: DWORD): String; var buffer: array[0..1023] of Char; begin LoadString(hInstance, ID, buffer, SizeOf(buffer)); result := String(buffer); end; procedure OpenFileDlg(hOpenFile: HWND; hControl: HWND; FilterString: PChar); begin ofn.lpstrFilter := FilterString; ....... //Вот так все достаю и выходит херня: OpenPathDlg(hwPage4, GetDlgItem(hwPage4, 35), PChar(LoadStr(72))); Наверное, буду делать, как ты мне посоветовал. Спасибо, твой код полностью рабочий! |
Сообщ.
#8
,
|
|
|
WIN32API, сделай вот так
function LoadStr(ID: DWORD): String; var buffer: array[0..1023] of Char; begin LoadString(hInstance, ID, buffer, SizeOf(buffer)); SetString(result,buffer,SizeOf(buffer)); end; |
Сообщ.
#9
,
|
|
|
2Krid Спасибо! Но самое интересное, что в случае с диалогом этот код:
function LoadStr(ID: DWORD): String; var buffer: array[0..1023] of Char; begin LoadString(hInstance, ID, buffer, SizeOf(buffer)); SetString(result,buffer,SizeOf(buffer)); end; проходит отлично, а в некоторых других есть глючки. Но это не столь важно. Сенкс!!! |