На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> CommandLineToArgvW ???? , Поделитесь примером использования под дельфи
    Уважаемый Аll,

    Функция CommandLineToArgvW что то засадила меня. Не получается правильно отпарсить путь вида
    ExpandedWrap disabled
       "debug\program.exe" '/state:1 /state_tag:0 /state_file:"C:\Users\XXX\AppData\Local\Temp\94C9.data"'


    Почему то возвращает мне количество аргументов 4 а доступен только 0.

    ExpandedWrap disabled
      function CommandLineToArgvW(lpCmdLine:LPCWSTR;var pNumArgs:Integer):PPWideChar;stdcall;external 'shell32.dll';
       
      var arrParams:PPWideChar;
            i:integer;
       
       arrParams:=CommandLineToArgvW(GetCommandLineW,i);
       if arrParams<>nil then
        begin
         arrParams^[0] - тут работает но с другими индексами нет.
       
       
         LocalFree(THandle(arrParams));
        end;


    Help pls.

    Добавлено
    ЗЫ под Вынь7 64 бит... под хрю таких путей не бывает.
      А чем ParamStr не угодило?
        2 Palladin = не работает...возвращает пустые аргументы.

        Зы, я дурак...сорри. Просмотрел что это двойной указатель. Кому интересно - вот так

        ExpandedWrap disabled
          var arrParams,pp:PPWideChar;
                i,c:integer;
                cl:array of WideString;
           
           arrParams:=CommandLineToArgvW(GetCommandLineW,c);
           if Assigned(arrParams) then
            begin
             SetLength(cl,c);
             pp:=arrParams;
             for i:=0 to c-1 do
              begin
               cl[i]:=WideString(PWideChar(pp^));
               inc(pp);
              end;
             LocalFree(THandle(arrParams));
            end;
          alex_sporik
          Да как не работает... у меня работает все... единственное что кавычки двойные ушли...
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0.0678 ]   [ 15 queries used ]   [ Generated: 16.05.26, 22:07 GMT ]