【问题标题】:Input hidden, output has excess indentation输入隐藏,输出有多余的缩进
【发布时间】:2015-09-03 16:51:47
【问题描述】:

如前所述here,我正在尝试在 Pascal 中重新创建我最初用 Ruby 编写的 SSH 配置文件管理器。通过提供的答案,我已经能够让外壳保持打开状态并接受输入。现在我遇到了一个新问题,即所有输入都被隐藏了,所有输出似乎都在每行之前平铺了几个制表符。更新后的相关代码如下:

if HasOption('c', 'connect') then begin
  TempFile:= GetRecord(GetOptionValue('c', 'connect'));
  AProcess:= TProcess.Create(nil);
  AProcess.Executable:= '/usr/bin/ssh';
  AProcess.Parameters.Add('-p');
  AProcess.Parameters.Add(TempFile.Port);
  AProcess.Parameters.Add('-tt');
  AProcess.Parameters.Add(TempFile.Username + '@' + TempFile.Address);
  AProcess.Options:= [];
  AProcess.ShowWindow:= swoShow;
  AProcess.InheritHandles:= False;
  AProcess.Execute;
  AProcess.WaitOnExit;
  AProcess.Free;
  Terminate;
  Exit;
end;

输出提供如下所示:

我依次运行lspwdexit

【问题讨论】:

  • 这与标签无关。这些行在末尾都缺少一个回车符。他们只有换行。因此,每一新行都从上一行离开的那一行之后的列开始。您列出的代码似乎没有显示您输出此信息的方式/位置,因此很难说出比这更详细的信息。
  • 是SSH连接,所以输出不是我的代码,是远程服务器生成的。
  • 我在 Linux 上。我使用的终端模拟器叫做 Yakuake,所有其他终端模拟器都有同样的问题。我没有处理甚至生成任何输出。我的代码在运行它的任何终端中打开与服务器的 SSH 连接,然后向我显示控制台。某种 Execve 类型的东西,除了它不会替换当前进程,因此我可以在 shell 退出后执行更多任务。
  • 从外观上看,它仍然是 LF 与 CRLF 的问题。不确定您的终端模拟器设置是什么。

标签: ssh pascal lazarus freepascal delphi


【解决方案1】:

因此,您可能使用 crt 或其他将终端置于原始模式的终端库,同时需要 cr 和 lf。

从uses子句中去掉crt,可能会更好

【讨论】:

  • 那...工作得很好。我不敢相信这很容易。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 2012-07-01
相关资源
最近更新 更多