2014-11-17 4 views
2

У меня проблема. Я хочу выполнить некоторые команды в командной строке linux. Я тестировал TProcess (так что я использую Lazarus), но теперь, когда я запускаю программу, нет ничего, что делает программа.Выполнение команд в командной строке Linux [Lazarus/Free Pascal]

Вот мой код:

uses [...], unix, process; 
[...] 
var LE_Path: TLabeledEdit; 
[...] 

Pro1:=TProcess.Create(nil); 
Pro1.CommandLine:=(('sudo open'+LE_Path.Text)); 
Pro1.Options := Pro1.Options; //Here i used Options before 
Pro1.Execute; 

С помощью этой программы, я хочу, чтобы открыть файлы с Судо (программка работает на пользовательском интерфейсе)

-> Извините за мой плохой английский; Извините за ошибки в вопросе: я использую StackOverflow в первый раз.

+0

Спасибо! У вас есть решение! В пункте 3 произошел сбой (без открытия пробела). Были дни, когда он сидел и пытался, но не эта небольшая ошибка. Tahnks! Я тестировал его, и он работает сейчас. – MSauer

ответ

3

Я думаю, что решение было недостающим пространственным символом?

Изменить

Pro1.CommandLine:=(('sudo open'+LE_Path.Text)); 

в

Pro1.CommandLine:=(('sudo open '+LE_Path.Text)); 
# ----------------------------^--- added this space char. 

Но если вы начинающий программист, другие мои комментарии по-прежнему стоит задуматься:

  1. пытается использовать Sudo в вашем первый бит кода может добавить целый набор проблем. SO ... Сначала получите что-то более легкое, возможно,

    /bin/ls -l/path/to/some/dir/that/has/only/a/few/files.

  2. узнать, как распечатать заявление, которое будет выполнено. Это самая простая форма отладки, и любой язык должен поддерживать это.

  3. Ваш английский достаточно хорошо сообщил о вашей проблеме, и, включив образец кода и разумное (не идеальное) описание проблемы, мы смогли вам помочь. В общем, хороший вопрос содержит наименьшее количество шагов для воссоздания проблемы. ИЛИ, если вы пытаетесь манипулировать данными,

    a. маленький образец ввод, б. образец выход с этого же входа c. ваш «лучший» код, который вы пробовали d. ваш текущий выход e. ваши мысли о том, почему он не работает И комментарии, чтобы указать в целом другие вещи, которые вы пробовали.

+0

Я не использовал вывод Commmand, потому что я не думал, что пространство после «открытого» может быть. В Lazarus проблема небольшая, что я не могу видеть так хорошо, если есть пространство или нет. Теперь я подумал, что Linux дает сообщение, если процесс не завершен или сбой. У меня есть результат процесса, но он работает. Я исправляю это сейчас – MSauer