Delphi XE2 を使用しています。私のコードは、SQL-Server 2008 R2 データベースからデータを取得します。返されるデータは、nvarchar(max)
1,055,227 バイトのデータを持つフィールドです。次のコードを使用して、フィールド データをファイルに保存します。
procedure WriteFieldToFile(FieldName: string; Query: TSQLQuery);
var
ss: TStringStream;
begin
ss := TStringStream.Create;
try
ss.WriteString(Query.FieldByName(FieldName).AsString);
ss.Position := 0;
ss.SaveToFile('C:\Test.txt');
finally
FreeAndNil(ss);
end;
end;
16 進ビューアでファイルを調べると、最初の 524,287 バイト (正確には 1/2 メガバイト) が正しいように見えます。残りのバイト (524,288 ~ 1,055,227) は、元のデータではなく、すべてヌル (#0) です。
TSQLQuery
これは、文字列フィールドを からファイルに保存する正しい方法ですか? 私が使用するTStringStream
ことにしたのは、最終的にはストリーム上のデータに他のことを行うコードを追加するためですTFileStream
。