由于它们的大小,我们从流中加载了一些文本字段。 this之前正在工作,但是现在,只有文本中的第一个字符被加载。
在更改数据库连接charset之前,我们拥有的代码是:
procedure TfrmTeste.LoadSqlScript_old;
var
_Stream: TStream;
begin
_Stream := qry1.CreateBlobStream(
qry1.FieldByName('Script'),
bmRead
);
try
FReportQry.Sql.LoadFromStream(_Stream);
finally
_Stream.Free;
end;
end;
我提到,加载的文本仅包含原始文本的第一个字符。 我试图将文本加载到tstringstream上,以了解发生了什么:
procedure TfrmTeste.LoadSqlScript_new;
var
_StringStream: TStringStream;
_Stream: TStream;
begin
_StringStream := TStringStream.Create;
try
_Stream := qry1.CreateBlobStream(
qry1.FieldByName('Script'),
bmRead
);
try
_StringStream.LoadFromStream(_Stream);
_StringStream.SaveToFile('c:\tmp\test.sql');
FReportQry.Sql.LoadFromStream(_StringStream);
finally
_Stream.Free;
end;
finally
_StringStream.Free;
end;
end;
足够感兴趣的是,保存到磁盘的文本文件具有全文。 但是,加载到TQUERY的SQL属性的文本只有第一个字符。 delphi rio 10.3.3与Firedac.
任何提示?
提前提前!
tothank to Remy,代码bellow适用于我的情况。
_Stream := _Qry.CreateBlobStream(_Qry.FieldByName('Script'), bmRead);
_StrStream := TStringStream.Create;
try
_StrStream.LoadFromStream(_Stream);
Query.Sql.LoadFromStream(_StrStream, TEncoding.Unicode);
finally
_Stream.Free;
_StrStream.Free;
end;