Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将RTF图像数据转换为纯文本(SQL Server和Dephi BDS 2006)_Sql Server_Delphi_Delphi 2006 - Fatal编程技术网

Sql server 将RTF图像数据转换为纯文本(SQL Server和Dephi BDS 2006)

Sql server 将RTF图像数据转换为纯文本(SQL Server和Dephi BDS 2006),sql-server,delphi,delphi-2006,Sql Server,Delphi,Delphi 2006,这件事已经有一段时间了。我们有一个包含映像类型数据的旧表(SQL Server)。我想得到文本 到目前为止,这就是我所做的 尝试转换或强制转换它(不允许) 尝试通过调用SP将数据导入delphi(我已经将数据分配给了一个变量) 查看了一个RTF to text函数(如果我能将图像数据转换成字符串的话,我在这里找到了一些东西) 这是我目前掌握的代码。它现在连接到一个按钮单击(将在服务中运行)。我认为报告var的赋值不正确,SetString也可能不正确。我甚至不确定我是否走对了这条路 var

这件事已经有一段时间了。我们有一个包含映像类型数据的旧表(SQL Server)。我想得到文本

到目前为止,这就是我所做的

  • 尝试转换或强制转换它(不允许)
  • 尝试通过调用SP将数据导入delphi(我已经将数据分配给了一个变量)
  • 查看了一个RTF to text函数(如果我能将图像数据转换成字符串的话,我在这里找到了一些东西)
这是我目前掌握的代码。它现在连接到一个按钮单击(将在服务中运行)。我认为报告var的赋值不正确,SetString也可能不正确。我甚至不确定我是否走对了这条路

var
report: array of byte;
s: string;

begin
  ADOStoredProc1.Parameters.ParamByName('@EncounterID').Value := '7';

  ADOStoredProc1.Open;
  while not ADOStoredProc1.EOF do
  begin
    report := ADOStoredProc1.FieldByName('Report').Value;
    SetString(s, PAnsiChar(@report[0]), length(report));
    Memo1.Lines.Add(s);

    ADOStoredProc1.Next;
  end;
我对“RTF图像”有点困惑。你是说RTF文本吗?还是图像(图片)?根据密码,我怀疑前者

我不知道为什么要使用字节数组,然后立即将其放入字符串中

这应该同样有效(实际上更好,因为它不使用
(这是一种变量转换)并避免
设置字符串
函数调用):


不过,您可能会通过这种方式在备忘录中获得RTF格式。如果试图去除格式,则需要使用
TRichEdit
,并使用消息添加内容,然后使用
TRichEdit.PlainText
属性。有一个这样做的例子。

数据存储为图像类型,即二进制。它实际上是一个RTF数据文件。我似乎还记得,我曾尝试过一次尝试,但没有取得多大成功。我再看看。谢谢Delphi为它创建了什么类型的字段?(选中ADOStoredProc1.FieldByName('Report').ClassName)如果它创建了一个TBlobField,您可以抓取BlobStream并使用LoadFromStream直接将其添加到TRichEdit中;在我的回答中提供的同一个Delphi新闻链接中有这样的代码。是的,这在某种程度上是有效的!还有一个问题我会单独问。谢谢我会发布完整的代码,一旦我得到解决。问题是,MSSQL在将二进制数据插入数据库时不知何故做了一些事情。需要弄清楚如何把它翻译回来。
while not ADOStoredProc.Eof do
begin
  Memo1.Lines.Add(ADOStoredProc1.FieldByName('Report').AsString;
  ADOStoredProc1.Next;
end;