gpt4 book ai didi

delphi - FireMonkey:从 Samba 读取 OS X 中的文件

转载 作者:行者123 更新时间:2023-12-02 01:54:37 25 4
gpt4 key购买 nike

我正在使用 Embarcadero Delphi XE5 for OS X 编写一个小型 FireMonkey-App(在我的 iMac 上测试 10.9),以从连接到我的 Win7 机器的 Samba“驱动器”读取文本文件。该文件可以通过双击来访问,但 TStringList 似乎无法加载它。我没有收到任何错误消息(甚至没有异常(exception))。调用 LoadFromFile() 后,Text 属性为空。

我尝试了 TStringList、TStringStream(带有 DataString 属性)、TFileStream 和 FileOpen()/FileRead()/FileClose()。加载后前两个似乎是空的。 TFileStream不读取数据或读取垃圾(也许我只是写错了)。但是 FileOpen()/FileRead() 工作正常。是否可以在 FireMonkey 应用程序中使用 TStringList 或者这是对多平台应用程序的某种限制?

PS:我尝试以Guest和Win7机器的管理员用户身份挂载我的共享文件夹。

这是我用来测试它的示例代码:

procedure TForm1.Button2Click(Sender: TObject);
var
sl: TStringList;
ss: TStringStream;
fs: TFileStream;
b: array[0..20480] of char;
sFile: String;

FileHandle : Integer;
iFileLength: Integer;
Buffer: PAnsiChar;
iBytesRead: Integer;
begin
sFile := '/Volumes/freigabe/aida64_2013-12-13_18-50-09_log.csv';

sl := TStringList.Create();
sl.LoadFromFile(sFile);
ShowMessage(sl.Text); // Empty

ss := TStringStream.Create();
ss.LoadFromFile(sFile);
ShowMessage(ss.DataString); // Empty

fs := TFileStream.Create(sFile, fmOpenRead);
fs.Read(b, fs.Size);
ShowMessage(AnsiString(b)); // Garbage data - I think I do it wrong with Read() above...

// Example from documentation
FileHandle := SysUtils.FileOpen(sFile, fmOpenRead);
if FileHandle > 0 then
begin
try
iFileLength := SysUtils.FileSeek(FileHandle,0,2);
FileSeek(FileHandle, 0, 0);
Buffer := PAnsiChar(System.AllocMem(iFileLength + 1));
iBytesRead := SysUtils.FileRead(FileHandle, Buffer^, iFileLength);
finally
FreeMem(Buffer);

ShowMessage(Buffer); // OK!
end;
end
else
ShowMessage('Error');


sl.Free;
ss.Free;
fs.Free;
end;

最佳答案

我在使用 LoadFromFile 时也遇到了与本地文件相同的问题。 Text 属性始终为空。在我使用 Encoding 参数调用该方法后,它起作用了:

htmlFile := TStringList.Create;    
htmlFile.LoadFromFile(sourceFile, TEncoding.ASCII);

希望这对您也有帮助。

安迪

关于delphi - FireMonkey:从 Samba 读取 OS X 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20574321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com