Invert函數如下:
function TForm1.Invert(pImage: pointer; size: Integer): pointer;
var
pData, pMem: PChar;
i: Integer;
begin
pMem:=AllocMem(size);
CopyMemory(pMem,pImage,size);
pData:=pMem+54;
for i:=0 to size541 do
begin
pData^:=Char(not integer(pData^));
pData:=pData+1;
end;
Result:=pMem;
end;
3. btnSave的Click事件,這裡演示了TMemoryStream的另一種用法,將Stream中的數據寫到數據庫中去。
var
MS: TMemoryStream;
begin
MS:=TMemoryStream.create;
Image1.Picture.Bitmap.SaveToStream(MS);
MS.Position:=0;
Table1.Append;
//在數據庫中添加一條記錄
TBlobField(Table1.FIEldbyName(image)).LoadFromStream(MS);
Table1.Post;
//將所作的更新寫入數據庫
end;
4. DBNavigator1的Click事件,這裡演示了TBlobStream的用法,使用了和寫入時不同的方法來讀出數據庫的圖象數據。
var
MS: TStream;
begin
with Table1 do
MS:=CreateBlobStream(FIEldbyName(image),bmRead);
Image1.Picture.Bitmap.LoadFromStream(MS);
MS.Free;
end;
現在你已經能夠在文件,數據庫,內存中任意讀寫數據流了。試試看吧!