FireMonkey:在OS X中从Samba读取文件

斯坦

我正在用Embarcadero Delphi XE5为OS X编写一个小型FireMonkey-App(在iMac上进行了10.9测试),以从连接到Win7机器的Samba“驱动器”中读取文本文件。双击可以访问该文件,但是TStringList似乎无法加载它。我没有收到任何错误消息(甚至没有例外)。调用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);

希望这对您也有帮助。

安迪

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

FireMonkey:在OS X中从Samba读取文件

来自分类Dev

Firemonkey OS X-请求提升的权限

来自分类Dev

通过FireMonkey / C ++在OS X中寻址COM

来自分类Dev

Windows / Mac OS X用户可以读取EXT4 Samba共享吗?

来自分类Dev

使用swift或obj-c在Cocoa App OS X中读取和写入文件标签

来自分类Dev

FireMonkey中的AlphaBlend

来自分类Dev

Firemonkey中的游标处理

来自分类Dev

FireMonkey中的AlphaBlend

来自分类Dev

在OS X中打开文件

来自分类Dev

在 FireMonkey 中链接 C Obj 文件

来自分类Dev

如何使OS X读取.bash_profile而不是.profile文件

来自分类Dev

从Ruby读取JSON文件(在Mac OS X上)

来自分类Dev

在Firemonkey中实施按钮单击

来自分类Dev

Firemonkey 中的 KEYDOWN [ CTRL 和 "+" ]

来自分类Dev

从linux vs OS X中的命名管道读取

来自分类Dev

无法在OS X中删除文件

来自分类Dev

如何覆盖OS X中的文件主机?

来自分类Dev

在OS X中编译C文件

来自分类Dev

Firemonkey中的Canvas.Pixels [X,Y]等效于什么?

来自分类Dev

以._开头的OS X文件

来自分类Dev

如何获得有关在OS X上读取文件的通知?

来自分类Dev

Firemonkey的本机iOS组件中的限制

来自分类Dev

如何在Firemonkey中绘制虚线?

来自分类Dev

FireMonkey应用程序中的彩色文本

来自分类Dev

在Firemonkey TListView中更改交替的颜色

来自分类Dev

如何在Firemonkey中获取TCanvas DC?

来自分类Dev

使XE5中的FireMonkey TListBox透明

来自分类Dev

如何在Firemonkey中设置按钮样式

来自分类Dev

Delphi XE-6 Firemonkey桌面应用程序的默认Firemonkey样式表(文件)?