На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> #0 в RC-файле , Как его прописать?
    Народ, мне нужно поместить в ресурсы вот такую лабуду:

    ExpandedWrap disabled
      'Программа (*.exe; *.com)' + #0 + '*.exe; *.com' + #0 +
               'Заставка (*.scr)' + #0 + '*.scr' + #0 +
               'Текстовый документ (*.txt)' + #0 + '*.txt' + #0 +
               'Все файлы (*.*)' + #0 + '*.*' + #0#0


    Как это сделать я знаю. Вопрос не в этом. Вопрос в том как прописать в RC-файле - #0 ?
      Как строку ты не пропишешь, так как строка это набор символов с завершающим #0
        WIN32API, вот так
        ExpandedWrap disabled
          STRINGTABLE
          {
           101, "Программа (*.exe; *.com)\0*.exe; *.com\0Заставка (*.scr)\0*.scr\0Текстовый документ (*.txt)\0*.txt\0Все файлы (*.*)\0*.*\0\0"
          }
          Компилируется только до первого "\0". Все что после него - уходит у ночь. Как буд-то дальше ничего нет. Такая проблемка. Я думаю это не цифра, а какая-то буква должна быть... для такого рода переноса.
            Может, #13?
              WIN32API, а я вот всю жизнь так делаю и чего-то проблем никогда не возникало ;). Ну это же синтаксис RC скрипта. Так что поведай: как компилируешь? в чем потом ресурсы смотришь? (если, например в редакторе MSVC++ 6, то он дальше первого нуля не показывает просто, хотя в самом res-файле вся строка целиком лежит). Как потом в проге строку берешь из ресурсов?
              Вообще, последовательность такая:
              компилишь rc-файл любым rc-компилером
              ExpandedWrap disabled
                brcc32.exe myres.rc

              Получаешь res. Подключаешь его к проге {$R myres.res}.
              В проге грузишь из ресурса:
              ExpandedWrap disabled
                var
                 lpBuf:array[0..MAX_PATH-1] of char;
                begin
                 LoadString(hInstance,101,lpBuf,MAX_PATH);
                  ....

              В lpBuf теперь лежит эта строка. MAX_PATH тут для примера. Можешь сам посчитать точную длинну строки, а лучше (как тут) взять заведомо больший размер.
              Ну а потом юзаешь строку, как тебе нуно:
              ExpandedWrap disabled
                var
                ofn:TOpenFileName;
                begin
                ...
                ofn.lpstrFilter := lpBuf;
                ...
                Наверное из-за функций у меня не пашет:


                ExpandedWrap disabled
                  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;
                  .......


                //Вот так все достаю и выходит херня:

                ExpandedWrap disabled
                   OpenPathDlg(hwPage4, GetDlgItem(hwPage4, 35), PChar(LoadStr(72)));


                Наверное, буду делать, как ты мне посоветовал. Спасибо, твой код полностью рабочий!
                  WIN32API, сделай вот так
                  ExpandedWrap disabled
                    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;
                    2Krid Спасибо! Но самое интересное, что в случае с диалогом этот код:

                    ExpandedWrap disabled
                      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;


                    проходит отлично, а в некоторых других есть глючки. Но это не столь важно. Сенкс!!! :rolleyes:
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0328 ]   [ 16 queries used ]   [ Generated: 24.04.24, 23:59 GMT ]