有人可以告诉我如何打开和阅读" / proc / cpuinfo "在Android设备上的 Delphi ?
原始代码:
var
i: integer;
FS: TFileStream;
LBuffer: TBytes;
begin
if FileExists('/proc/cpuinfo') then
begin
FS:= TFileStream.Create('/proc/cpuinfo', fmOpenRead);
try
SetLength(LBuffer, FS.Size);
FS.ReadBuffer(Pointer(LBuffer)^, Length(LBuffer));
for i:= 0 to Length(LBuffer) - 1 do
Memo1.Lines.Add(LBuffer[i]);
finally
FS.Free;
end;
end;
end;
问题是FS的大小是-1,因此不是读取...
答案 0 :(得分:1)
如果文件流报告的大小为-1
,那么您将不得不更加努力地阅读内容。这是一个虚拟文件,因此它不像文件那样表现并报告其大小也就不足为奇了。我预计它也不会支持寻求。
试试这个:
var
Buffer: array [0..1023] of Byte;
BytesStream: TBytesStream;
BytesRead: Integer;
....
BytesStream := TBytesStream.Create;
repeat
BytesRead := FS.Read(Buffer, SizeOf(Buffer));
BytesStream.Write(Buffer, BytesRead);
until BytesRead < SizeOf(Buffer);
// now the contents can be read from BytesStream.Bytes
// convert to a string using TEncoding
只需要阅读文件,直到没有其他内容可读。
答案 1 :(得分:0)
答案很简单(经过测试):
var
FS: TFileStream;
ch: Char;
RawLine: System.UnicodeString;
begin
if FileExists('/proc/cpuinfo') then
begin
try
RawLine:= '';
ch := #0;
FS:= TFileStream.Create('/proc/cpuinfo', fmOpenRead);
while (FS.Read( ch, 1) = 1) and (ch <> #13) do
begin
RawLine := RawLine + ch
end;
Memo1.Lines.Append(RawLine);
finally
FS.Free;
end;
end;
end;
享受测试;)