Powerbuilder не ожидает завершения процесса, вызванного Run()
. Возвращаемые значения Run()
основаны исключительно на том, успешно ли он вызвал внешний процесс, а не на том, что внешний процесс сделал дальше.
Это означает, что pdftk, скорее всего, завершил работу правильно, но вы попытались получить доступ к выводу слишком рано. Вы должны будете найти какой-нибудь способ потренироваться, когда он закончится. Возможно, вызовите его из командного файла, который создает другой файл до его завершения, а затем в Powerbuilder проверьте наличие этого файла.
Кроме того, вы можете использовать другой метод вызова внешнего процесса. Это пример вызова внешнего процесса через Windows Scripting Host:
OleObject wsh
CONSTANT integer MAXIMIZED = 3
CONSTANT integer MINIMIZED = 2
CONSTANT integer NORMAL = 1
CONSTANT integer HIDE = 0
CONSTANT boolean WAIT = TRUE
CONSTANT boolean NOWAIT = FALSE
wsh = CREATE OleObject
li_rc = wsh.ConnectToNewObject( "WScript.Shell" )
li_rc = wsh.Run(ls_runinput, HIDE, TRUE)
(пример кода взято с сайта Стюарта Далби ).
Если вы все еще не можете заставить его работать, лучше всего разбить его и убедиться, что вы можете сначала выполнить FileOpen
для уже существующего файла, а затем внешне проверить, что вывод процесса, вызванного Run()
правильно (в конце концов).
Просто для справки, символ |
не является специальным символом и не нуждается в экранировании в строке.