Кривая реализация ParamStr

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Кривая реализация ParamStr

Сообщение Syndrome » 14.03.2015 15:21:56

Лазарус затирает первый аргумент командной строки именем исполняемого файла.

Допустим есть программа "C:\Test\Test.exe" которая перечисляет свои параметры через ParamStr.
Код: Выделить всё
program test;

uses LazUTF8;

var
   i:integer;
   Str:UTF8String;

begin
   Str:= 'Командная строка:';
   Str:= UTF8ToConsole(Str);
   WriteLn(Str);
   for i:= 0 to System.Paramcount do begin
      Str:= LazUTF8.ParamStrUTF8(i);
      Str:= UTF8ToConsole(Str);
      WriteLn(Str);
   end;
   ReadLn;
end.


Ее запускает программа "project1":
Код: Выделить всё
program project1;

uses SysUtils, Windows, LazUTF8;

function SimpleCreateProcess(Exe:utf8string; Line:utf8string = ''):boolean;
var
   AppName,ComLine,CurDir:unicodestring;
   StartInfo:TSTARTUPINFO;
   Handles:TPROCESSINFORMATION;
begin
   Result:= false;
   if Exe = '' then exit;

   AppName:= UTF8toUTF16(Exe);
   ComLine:= UTF8toUTF16(Line);
   CurDir:= UTF8toUTF16(ExtractFileDir(Exe));

   FillChar(Handles,SizeOf(Handles),0);
   FillChar(StartInfo,SizeOf(StartInfo),0);
   StartInfo.cb:= SizeOf(StartInfo);

   if CreateProcessW(@AppName[1],@ComLine[1],nil,nil,false,0,nil,@CurDir[1],StartInfo,Handles) = false then exit;
   CloseHandle(Handles.hProcess);
   CloseHandle(Handles.hThread);

   Result:= true;
end;

begin
   SimpleCreateProcess('c:\test\test.exe','"Аргумент 1" "Аргумент 2" "Аргумент 3"');
end.


Появляется консоль со следующими строками:
Код: Выделить всё
Командная строка:
c:\test\test.exe
Аргумент 2
Аргумент 3


"Аргумент 1" исчез. Как временное решение я использую свою версию функций ParamStrUTF8 и Paramcount.
Я нуб и не умею устанавливать SVN лазарус. Надеюсь на форуме есть человек с хорошим знанием английского который проверит есть ли ошибка в Trunk версиях FPC/лазаруса и отправит баг-репорт.
Syndrome
незнакомец
 
Сообщения: 3
Зарегистрирован: 12.03.2015 14:08:08

Re: Кривая реализация ParamStr

Сообщение Сквозняк » 14.03.2015 15:36:16

Надеюсь на форуме есть человек с хорошим знанием английского который проверит есть ли ошибка в Trunk версиях FPC/лазаруса и отправит баг-репорт.


На этом багтрекере можно использовать гугльтранслитовый английский, что часто и делалось. Пишешь на странице translate.google.ru сообщение по пусски, переводишь на английский, правишь результат. После переводишь полученное английское предложение на русский и смотришь что же ты напереводил. Главное, шаги по воспроизведению ошибки опиши чётко. Можешь ещё и скриншот добавить чтобы было понятнее о чём написал.
Сквозняк
энтузиаст
 
Сообщения: 1129
Зарегистрирован: 29.06.2006 22:08:32

Re: Кривая реализация ParamStr

Сообщение Syndrome » 14.03.2015 15:42:51

Кроме знания английского нужна проверка ошибки на SVN версиях Лазаруса и FPC.
Я не знаю как установить их.
Syndrome
незнакомец
 
Сообщения: 3
Зарегистрирован: 12.03.2015 14:08:08

Re: Кривая реализация ParamStr

Сообщение Сквозняк » 14.03.2015 16:17:44

Значит ставишь последнюю версию лазаруса с сайта. После регистрируешься на багтрекере http://bugs.freepascal.org/ , смотришь как оформляются другие баги, логинишься, жмёшь кнопку [Report Issue ]. А после заполняешь форму, в частности вписываешь, ошибка чего (лазаруса, фпц, текстового иде), платформу (x86 или x86_64), операционку и версию лазаруса на котором баг воспроизводится. А проверять git версию лазаруса будет тот кто ошибку будет исправлять. Лазарус качается через команду git clone git://github.com/graemeg/lazarus.git Но это только лазарус, без FPC.
Сквозняк
энтузиаст
 
Сообщения: 1129
Зарегистрирован: 29.06.2006 22:08:32

Re: Кривая реализация ParamStr

Сообщение Devel0 » 14.03.2015 16:40:08

Syndrome писал(а):Кроме знания английского нужна проверка ошибки на SVN версиях Лазаруса и FPC.Я не знаю как установить их.

Попробуй ночные сборки отсюда: http://www.getlazarus.org/setup/.
Как альтернативное решение можно предложить использовать TProcessUTF8
Devel0
новенький
 
Сообщения: 66
Зарегистрирован: 24.07.2011 10:43:13


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 241

Рейтинг@Mail.ru