【发布时间】:2026-01-18 19:45:01
【问题描述】:
我正在尝试在 Android 上使用 Delphi 10 执行命令行并获取命令的输出。
我正在使用这里的文件:
https://github.com/FMXExpress/android-object-pascal-wrapper/tree/master/android-23
这是我的代码:
uses Classes,
Androidapi.Helpers,
java.lang.Process, java.lang.Runtime,
java.io.OutputStream, java.io.InputStream,
java.io.InputStreamReader, java.io.BufferedReader;
procedure Execute(sCmd: string; sOut : TStringList);
var Process : JProcess;
Runtime : JRuntime;
Input : JInputStream;
BuffInput : JBufferedReader;
begin
Process := TJRuntime.JavaClass.getRuntime.exec(StringToJString(sCmd));
//Input := JInputStream(Process.getInputStream);
BuffInput := JBufferedReader(jInputStreamReader(Process.getInputStream) );
while (s = '') do
begin
s := JStringToString(BuffInput.readLine);
sOut.Add(s);
end;
//--- Compile but get Segmentation fault(11) at
// s := JStringToString(BuffInput.readLine);
end;
【问题讨论】:
-
您是否阅读过有关
InputStream和OutputStream类的Android 文档? -
你卡在什么地方了?
-
-Remy ,是的,我读过它,但到目前为止我没有得到任何结果,对不起,我是所有 android 东西的菜鸟。
-
你到目前为止没有得到任何结果,因为你没有努力得到任何结果。您尝试从流中获取任何输入或输出?
-
如果您调用 1 天的尝试不费力...无论如何,我发现很多示例可以在 java 中完成,但就像我说的将 java 转换为 delphi BufferedReader stdInput = new BufferedReader (新的 InputStreamReader(proc.getInputStream()));字符串 s = null; while ((s = stdInput.readLine()) != null) { System.out.println(s); }