亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi數據庫編程教程(六)

2019-11-18 18:38:35
字體:
來源:轉載
供稿:網友
 

 第四節  在BLOB中尋找JPEG的開端

      OLE對象類型格式—思路三OLE object type format - take three!)
      現在所有我們需要做的是存儲圖片到磁盤(存為普通的二進制文件)并了解它里門的內容是什么。

      所有的圖片文件(格式)都有用來唯一的標識圖像的文件頭。JPG圖片文件以所謂的SOI標記開始,該標記的十六進制值是$FFD8。

下面一行代碼存儲圖片字段值到工作目錄的相關文件(BlobImage.dat)。在表單的OnCreate事件中放置這條代碼,開始工程以后再移除該代碼。

      ADOTable1Picture.SaveToFile('BlobImage.dat');

      一旦我們有了這個文件。我們就可以使用Hex editor看它的內容。

Jpeg as OLE object binary file

      你相信嗎?MS access把連接的OLE對象的路徑作為對象定義的一部分存儲在OLE對象字段中。因為OLE對象的存儲定義沒有被文檔化(???這直接來自于MS),所以沒有辦法知道真正的圖像數據被寫之前能得到什么。

      分兩個部分考慮這個問題。第一:我們需要找到'FFD8'并從那兒開始讀取圖像。第二:'FFD8'不可能總在文件的同一個位置。結論:我們需要一個函數,返回Access數據庫中存儲為OLE對象的JPG文件的SOI標記的位置。

      正確的方法—思路四(The correct way - take four!)

      提供了Blob類型字段后,我們的函數應返回ADOBlobStream中'FFD8'字符串的位置。ReadBuffer(讀緩沖區)從流中一個字節一個字節的讀取數據。對ReadBuffer的每個調用都會一個字節一個字節的移動流的位置。當兩個字節一起引出SOI標記時,函數返回流的位置。這是這個函數:

   function JpegStartsInBlob(PicField:TBlobField):integer;
   var
    bS     : TADOBlobStream;
    buffer : Word;
    hx     : string;
   begin
    Result := -1;
    bS := TADOBlobStream.Create(PicField, bmRead);
    try
     while (Result = -1) and (bS.Position + 1 < bS.Size) do
     begin
      bS.ReadBuffer(buffer, 1);
      hx:=IntToHex(buffer, 2);
      if hx = 'FF' then begin
       bS.ReadBuffer(buffer, 1);
       hx:=IntToHex(buffer, 2);
      if hx = 'D8' then Result := bS.Position - 2
       else if hx = 'FF' then
             bS.Position := bS.Position-1;
      end; //if
     end; //while
     finally
      bS.Free
     end;  //try
   end;
   一旦我們有了SOI標記的位置,我們就能使用它在ADOBlob流中找到圖片的位置。
     uses jpeg;
     ...
     PRocedure TForm1.btnShowImageClick(Sender: TObject);
     var
      bS  : TADOBlobStream;
      Pic : TJpegImage;
     begin
      bS := TADOBlobStream.Create(AdoTable1Picture, bmRead);
      try
       bS.Seek(JpegStartsInBlob(AdoTable1Picture),soFromBeginning);
       Pic:=TJpegImage.Create;
       try
        Pic.LoadFromStream(bS);
        ADOImage.Picture.Graphic:=Pic;
       finally
        Pic.Free;
       end;
      finally
       bS.Free
      end;
     end;
   運行工程,OK!
JPG image from MS Access with ADO
   現在誰會說編程沒有趣味?

      注:在真正的代碼程序中,我們會在TDataSetAfterScroll事件中加入代碼用于從當前行中讀取和顯示圖像(它在ADOTable1AfterScroll事件過程中)。當應用程序從一個記錄滾到另一個時,AfterScroll事件發生。

    思路五!

    這就是本章的主要內容?,F在你可以存儲和顯示所有你感興趣的JPG圖片。在這篇文章的最后一頁,我會提供完整的代碼(form1單元);所有的數據安排都放在表單的OnCreate事件中。這確保了所有的三個組件被正確連接—在設計時你不需要使用Object Inspector(對象檢視器)。

    我承認,這一章不適合初學者,但世界是殘酷的!另一件事:你注意到最后你都不知道怎樣改變(或增加一些新的)表中的圖片!是的,那又是另一個完整的故事了!


上一篇:Delphi數據庫編程教程(七)

下一篇:Delphi數據庫編程教程(五)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区美女xx视频| 精品视频久久久久久| 91国产中文字幕| 欧美亚洲视频一区二区| 欧美乱大交做爰xxxⅹ性3| 国产午夜精品美女视频明星a级| 亚洲男人的天堂在线播放| 欧美在线不卡区| 欧美精品在线视频观看| 欧美成人午夜剧场免费观看| 伦伦影院午夜日韩欧美限制| 日韩在线视频中文字幕| 欧美日韩国产影院| 日韩a**站在线观看| 亚洲在线观看视频| 成人黄色在线免费| 日韩精品在线观| 欧美视频在线观看免费网址| 北条麻妃久久精品| 色综合久久88色综合天天看泰| 亚洲国产精品久久久久秋霞蜜臀| 黑人巨大精品欧美一区二区免费| 在线亚洲男人天堂| 日本免费在线精品| 国产精品视频在线观看| 日韩视频在线免费观看| 日韩大陆毛片av| 国产69精品久久久久99| 国产成人av在线播放| 韩国视频理论视频久久| 日韩精品在线观看网站| 精品久久久一区二区| 亚洲激情久久久| 久久中国妇女中文字幕| 欧美寡妇偷汉性猛交| 久久久亚洲成人| 国产女人18毛片水18精品| 欧美性xxxxhd| 久久噜噜噜精品国产亚洲综合| 国产日韩欧美在线看| 国产一区二区三区在线| 成人xvideos免费视频| 尤物99国产成人精品视频| 国产成人精品免费视频| 亚洲美女视频网| 成人欧美在线视频| 国产欧美精品日韩精品| 亚洲精品99999| 在线午夜精品自拍| 欧美色视频日本高清在线观看| 91亚洲精华国产精华| 成人免费看片视频| 欧美成人午夜激情视频| 色婷婷亚洲mv天堂mv在影片| 亚洲免费电影在线观看| 欧美视频国产精品| 国产精品男人的天堂| 亚洲精品aⅴ中文字幕乱码| 久久久免费高清电视剧观看| 2019中文字幕在线观看| 久久久久女教师免费一区| 国产精品爽黄69| 国产精品女人久久久久久| 成人在线视频福利| 精品免费在线视频| 亚洲天堂精品在线| 成人免费在线视频网址| 精品在线欧美视频| 国产视频精品久久久| 久久久久久久一区二区| 欧美性精品220| 国产日韩欧美在线观看| 亚洲国产私拍精品国模在线观看| 亚洲人成在线观| 欧美一区在线直播| 91色琪琪电影亚洲精品久久| 亚洲精品综合久久中文字幕| 成人免费网视频| 亚洲综合最新在线| 精品在线小视频| 久久综合久久88| 欧美性生交xxxxxdddd| 日韩av一区二区在线观看| 亚洲欧美日韩久久久久久| 亚洲精品在线不卡| 国产精品一久久香蕉国产线看观看| 久久亚洲影音av资源网| 亚洲香蕉av在线一区二区三区| 国产一区二区三区精品久久久| 国产精品1区2区在线观看| 亚洲视频视频在线| 久久91亚洲人成电影网站| 国产精品人成电影在线观看| 国产999视频| 国产成人一区二区三区电影| 日韩在线观看高清| 亚洲午夜未删减在线观看| 久久精品国产69国产精品亚洲| 色无极亚洲影院| 最新的欧美黄色| 操日韩av在线电影| 亚洲视频电影图片偷拍一区| 高清欧美性猛交xxxx黑人猛交| 欧美成人h版在线观看| 欧美精品在线视频观看| 精品在线小视频| 国产一区二区三区精品久久久| 国产综合香蕉五月婷在线| 久久福利视频导航| 亚洲一二三在线| 国产成人精品久久二区二区| 国产精品视频久久久| 国产成人小视频在线观看| 日本久久久久久| 成人精品在线观看| 亚洲欧洲日本专区| 亚洲sss综合天堂久久| 欧美日韩在线影院| 久久夜色精品国产亚洲aⅴ| 国产精品十八以下禁看| 国产精品专区第二| 久久影院资源网| 国产综合福利在线| 精品一区二区三区电影| 成人av资源在线播放| 欧美丰满片xxx777| 欧美激情精品久久久| 国产精品成人久久久久| 中文字幕久久亚洲| 国产精品视频中文字幕91| 国产欧美精品一区二区三区介绍| 影音先锋日韩有码| 亚洲成人网在线观看| 456亚洲影院| 亚洲福利精品在线| 97在线视频免费观看| 国产精品自产拍在线观| 亚洲一区精品电影| 亚洲综合第一页| 精品国模在线视频| 亚洲区bt下载| 欧美成年人视频网站欧美| 伊人久久久久久久久久久久久| 日韩一区av在线| 亚洲欧美日本伦理| 成人免费视频97| 国产精品久久久久久av| 成人黄色中文字幕| 91久久久久久久久久久| 亚洲精品一区二区网址| 亚洲自拍另类欧美丝袜| 国产精品91久久久| 日韩精品欧美国产精品忘忧草| 国产91精品久久久久| 欧美黄色成人网| 中文字幕日韩av综合精品| 另类天堂视频在线观看| 国产欧美一区二区| 97久久精品国产| 亚洲男人天堂2023| 国产精品无码专区在线观看| 奇米一区二区三区四区久久| 亚洲综合精品伊人久久| 亚洲乱码一区二区|