Sql server 将RTF图像数据转换为纯文本(SQL Server和Dephi BDS 2006)
这件事已经有一段时间了。我们有一个包含映像类型数据的旧表(SQL Server)。我想得到文本 到目前为止,这就是我所做的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
- 尝试转换或强制转换它(不允许)
- 尝试通过调用SP将数据导入delphi(我已经将数据分配给了一个变量)
- 查看了一个RTF to text函数(如果我能将图像数据转换成字符串的话,我在这里找到了一些东西)
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;