问题如标题。
我查了很多资料,都找不到解决办法,不知各位高手用什么方法来实现?
我查了很多资料,都找不到解决办法,不知各位高手用什么方法来实现?
解决方案 »
- 异构数据库之间整表数据导入
- 急!20分,给我一段最简单的直接发文本到打印机的程序,
- 將form放入panel中后,form中actionlist定義的shortcut失效,如何解決?
- 关于delphi 7的问题
- 为什么原表中空的日期,select dateset from aaa.dbf后在控件中显示1899-12-30?急!!!
- 武汉的爱好IT业的朋友请来转转:)给见面礼啦
- +++++三层系统中,执行update语句,出现了“灾难性错误”何解?+++++
- 请看这段代码有什么问题?
- 如何激发另一个窗口中的按扭点击事件?
- ~~~关于泛类型TList<>赋值的疑惑,求教~~~
- 一条sql语句
- 关闭子窗体问题~
var
fnole:string;
function BlobContentTostring(const sfileName:string) :string;
begin
with TfileStream.Create(sFileName,fmOpenRead) do
begin
try
setLength(Result,Size);
Read(Pointer(Result)^,size);
finally
Free;
end;
end;
end;
begin
if opendialog1.Execute then
begin
fnole:=opendialog1.FileName;
clientdataset1.Edit;
clientdataset1.FieldByName('BLOBDATA').AsString:=BlobContentTostring(fnOle);
clientdataset1.Post;
clientdataset1.ApplyUpdates(0);
end;
end;
从数据库里读出来
TBlobField(fieldbyname(image) as TBlobField).SaveToFile(...)
TBlobField(fieldbyname(image) as TBlobField).SaveToStream(...)
往数据库里写
Edit;
TBlobField( FieldByName(UpFieldName) as TBlobField).LoadFromStream(Img);
Post;
function Stream2Variant(Stream: TStream): Variant;
var
Buffer: Pointer;
begin
Stream.Seek(0, soFromBeginning);
result := VarArrayCreate([0, Stream.Size - 1], varByte);
Buffer := VarArrayLock(result);
try
Stream.ReadBuffer(Buffer^, Stream.Size);
finally
VarArrayUnlock(result);
end;
end;var
Stream: TStream;
begin
Stream := TFileStream.Create(FileName, fmOpenRead);
try
result := Stream2Variant(Stream);
finally
Stream.Free;
end;
end;procedure TMidasProxyInterfaceD.Variant2File(V: Variant; FileName: string);
procedure Varint2Stream(V: Variant; Stream: TStream);
var
Buffer: Pointer;
begin
Buffer := VarArrayLock(V);
try
Stream.Seek(0, soFromBeginning);
Stream.WriteBuffer(Buffer^, VarArrayHighBound(V, 1) - VarArrayLowBound(V, 1) + 1);
finally
VarArrayUnlock(V);
end;
end;
var
Stream: TStream;
begin
Stream := TFileStream.Create(FileName, fmCreate);
try
Varint2Stream(V, Stream);
finally
Stream.Free;
end;
end;function TMidasProxyInterfaceD.DownLoadFile(RemoteFileName: string; SaveToFilePath: string): boolean;
var
MidasProxySrvDisp: IMidasProxySrvDDisp;
etFileOptSrvDisp: IetFileOptSrvDisp;
OFStream: OleVariant;
begin
CheckSocketConnection();
try
MidasProxySrvDisp := IMidasProxySrvDDisp(IDispatch(FMidasProxyConnection.AppServer));
etFileOptSrvDisp := IetFileOptSrvDisp(IDispatch(MidasProxySrvDisp.etFileInterface));
try
OFStream := etFileOptSrvDisp.DownFile(RemoteFileName);
Variant2File(OFStream, SaveToFilePath);
result := true;
except
result := false;
end;
finally
etFileOptSrvDisp := nil;
MidasProxySrvDisp := nil;
end;
end;function TMidasProxyInterfaceD.UpLoadFile(LocalFileName, SaveFileName: string): boolean;
var
MidasProxySrvDisp: IMidasProxySrvDDisp;
etFileOptSrvDisp: IetFileOptSrvDisp;
begin
CheckSocketConnection(); try
if not SysUtils.FileExists(LocalFileName) then begin
result := false;
Exit;
end; MidasProxySrvDisp := IMidasProxySrvDDisp(IDispatch(FMidasProxyConnection.AppServer));
etFileOptSrvDisp := IetFileOptSrvDisp(IDispatch(MidasProxySrvDisp.etFileInterface));
try
if etFileOptSrvDisp.UpLoadFile(File2Variant(LocalFileName), SaveFileName) = '1' then
result := true
else
result := false;
except
result := false;
end;
finally
etFileOptSrvDisp := nil;
MidasProxySrvDisp := nil;
end;end;