如何在 Delphi 中的 Android 设备上打开和阅读“/proc/cpuinfo”
How to open and read "/proc/cpuinfo" on Android device in Delphi
谁能告诉我如何打开和阅读 "/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,因此不是读...
如果文件流报告的大小为 -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
简单地说,就是让您阅读文件,直到没有更多内容可读为止。
答案很简单(已测试):
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;
享受测试;)
谁能告诉我如何打开和阅读 "/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,因此不是读...
如果文件流报告的大小为 -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
简单地说,就是让您阅读文件,直到没有更多内容可读为止。
答案很简单(已测试):
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;
享受测试;)