![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() здравствуйте помогите пожалуйста разобраться в кодировке. эта программа
запускает консольное приложение и перехватывает все его сообщения и их записывает в Memo дело в том что в Delphi 7 все исправно работает а в Delphi xe5 кракозябры. ![]() я знаю что delphi с 2009 версии перешла на unicode только не могу понять как переделать это приложение. прошу пожалуйста помогите прикладываю исходый текст программы Последний раз редактировалось ZILosoft, 15.12.2013 в 02:21. |
#2
|
|||
|
|||
![]() Укажи принудительно AnsiString с последующей переконвертацией.
|
#3
|
|||
|
|||
![]() Пытался уже. Переменную data в потоке указывал ansistring но все равно на выходе имею "????????????? ???"
|
#4
|
||||
|
||||
![]() Цитата:
Т.е. будет примерно так: Код:
procedure TRedirectThread.Execute; var pa :SECURITY_ATTRIBUTES; ..... sBufferOut :AnsiString; // Заменяем тип с string на AnsiString s: string; // Вот здесь отдельная переменная для CreateProcess {sBufferErr :string; //} ..... begin ..... // В этом куске кода формирующем командную строку для CreateProcess // заменяем переменную sBufferOut на новую переменную s if sProgram='' then exit else begin if Pos(' ',sProgram)>0 then s := '"' + sProgram + '"' else s := sProgram; if sParams<>'' then Insert(' '+sParams,s, Length(s)+1); end; ..... // И в CreateProcess соответственно используем переменную s вместо sBufferOut if CreateProcess(nil, PChar(s), nil,nil, true, 0, nil, Pointer(sWorkDir), sui, pi) then begin ..... После этих изменений должно заработать, но как я уже сказал проверить мне не на чем, возможно ещё что-то нужно поменять. |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
ZILosoft (15.12.2013)
|
#5
|
|||
|
|||
![]() Спасибо тебе огромное !!
Теперь все работает )) |