【问题标题】:FoxPro STRCONV equivalent in DelphiDelphi 中的 FoxPro STRCONV 等效项
【发布时间】:2018-08-09 07:49:24
【问题描述】:

我正在寻找delphi中的等效函数。

这是转换为字符串并将其存储到 LONGTEXT 字段的 foxpro 代码。

xString = strconv(filetostr("C:\AAA.JPG"), 13)

返回

strtofile(strconv(Temp_T.Photo, 14), "C:\BBB.JPG")

有人可以帮我转换这些行吗?

此代码是将任何文件存储到“Photo LONGTEXT NULL”字段的一种方法

【问题讨论】:

  • 第一行将文件内容编码为 Base64 流。第二个未编码(参见FILETOSTRSTRCONV 参考)。
  • 根据您的 Delphi 版本,有可用的 Base64Encode 和 Base64Decode 函数。您可能可以通过 Google 搜索这些函数名称中的任何一个,后跟 delphi 来找到它们的实现。
  • 此外,您还可以找到有关在数据字段中读取和写入图像的资源。最后你可能需要编写一些代码来将它们组合在一起并具有等效的功能。
  • @SertacAkyuz:Base64 解码应该重新创建图像,LONGTEXT 是一个TMemoField,它将像任何其他文本内容一样存储 Base64 编码文本。不应该有太多额外的工作 - 它是文本。
  • 很遗憾,本网站不能替代代码编写或代码转换服务。你必须把你拥有的信息放在一起。

标签: mysql delphi foxpro


【解决方案1】:

如果你想读写文件,IoUtils 单元有一些方便的功能。 如果您使用的是 JPG,最好不要转换为字符串。最好只存储原始字节。

uses System.IoUtils;

var 
  xBytes:TBytes;
begin
  xBytes  := TFile.ReadAllBytes('C:\AAA.jpg');
  TFile.WriteAllBytes('C:\BBB.JPG',xBytes);
end;

【讨论】:

  • 我认为这是关于保存到 FoxPro BLOB 字段主题并从中读取。
  • 这是关于二进制数据的 Base64 编码以存储在文本字段中,而不是关于读取/写入文件。
  • 实际上,我越想这个答案就越糟糕。使用您编写的内容,根本不需要读取或写入文件。你可以只复制文件。我认为您严重误读了所提出的问题。
  • 这都是关于将文件内容转换为字符串的。变量 xString 我可以使用它来保存到 LONGTEXT 字段,就像这样。 StrSql = "update inv_items set photo = '" + xString + "' where id = 1".
  • 这里没有 BLOB,全是 LONGTEXT,因为 BLOB 字段有时在使用 BLOB 字段恢复 MySQL 备份时出现问题。在我看来,最好使用 LONGTEXT。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多