之前沒用過delphi開發
現在碰到個問題
s_sql:='SELECT * FROM table ';
ADOl.Close();
ADOl.SQL.Clear();
ADOl.SQL.Add(s_sql);
ADOl.Open;
表有一個欄位1,欄位1型別為image,試問ADOdzbl.FieldByName('欄位1).Value為什么取不出值。
uj5u.com熱心網友回復:
這個這個使用blob流取出!uj5u.com熱心網友回復:
具體怎么寫,詳細說一下吧 小弟菜鳥,實在不會uj5u.com熱心網友回復:
TBlobField(ADOdzbl.Fieldbyname('欄位1')).SaveToFile(ExtractFilePath(Application.ExeName)+'a.jpeg');uj5u.com熱心網友回復:
這樣我知道 跟ms:=TMemoryStream(ADOdzbl.CreateBlobStream(ADOdzbl.FieldByName('病歷內容'),bmRead));
ms.SaveToFile('c:\ddd1.xml');
差不多,把二進制流保存成檔案了,我現在是要用這個二進制流,把取出來的二進制流賦值給一個變數,傳給另外一個函式,保存成檔案就復雜了。這個二進制流怎么賦值給變數,再以引數形式傳給別的函式(引數型別為OleVariant)
uj5u.com熱心網友回復:
var
ms: TMemoryStream;
begin
TBlobField(ADOdzbl.FieldbyName('欄位1')).SaveToStream(ms);
end;
uj5u.com熱心網友回復:
Sream轉OleVariant是試下下面的函式:參考自:http://blog.csdn.net/xt_chaoji/article/details/6891360
function TForm1.StreamToVariant(Stream: TStream): OleVariant;
var
p: Pointer;
begin
Result := VarArrayCreate([0, Stream.Size - 1], varByte);
p := VarArrayLock(Result);
try
Stream.Position := 0;
Stream.Read(p^, Stream.Size);
finally
VarArrayUnlock(Result);
end;
end;
uj5u.com熱心網友回復:
這個保存成TMemoryStream型別,傳給另外一個函式引數型別是OleVariant,型別不匹配,就糾結到這了,uj5u.com熱心網友回復:
試下上面的函式:StreamToVariant
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131908.html
標籤:語言基礎/算法/系統設計
上一篇:求助大家一個基本的問題!!
