Munka terén típusú blob

Fields BLOB (Binary Large Object) célja, hogy adatokat tartalmazza nedves típusú bú-meghatározás méretét. BLOB mező egy rekord adatbázisba tartalmazhat 3 byte adatot, míg a hasonló területen egy másik rekordot is tartalmazhat

3 kilobájt adatot. Ezek a területek a leginkább alkalmas a tárolására nagy mennyiségű tech

száz, vagy rajz ilyen kiszámíthatatlan adattípusok, mint például OLE objektumokat.

Class TBlobField és mezőtípusok

Amint azt korábban említettük ebben a fejezetben, a könyvtárban VCL ott TBlobField osztály származtatott osztály TField és kifejezetten a tokozása BLOB mezőket. Class TBlobField tartalmaz BlobType TBlobType típusú tulajdonság, hogy van leképezve pontosan, milyen típusú adatok tárolása a területen BLOB. TBlobType típus meghatározása a DB készüléket a következőképpen:

Minden lehetséges típusú objektumok és adatok vehet BLOB mező, táblázat tartalmazza. 7.4.

7.4 táblázat. Típusai TBlobField osztályú területeken

Mező típusa Adat típus

ftBlob típus és felhasználó által definiált

ftGraphic Rasztergrafika a Windows ftFmtMemo MEMO mező Paradox ftParadoxOle méret OLE objektum

ParadoxOkonchanie táblázat. 7.4.

Mező típusa Adat típus

ftDBaseOLE kifogást OLE dBASE

ftTypedBinary Bármilyen strukturálatlan adatok

ftCursor..ftDataSet Elfogadhatatlan BLOB ftOraBlob Fields BLOB asztalok Oracle8 ftOraClob Fields CLOB Oracle8 asztalok

Jellemzően a legtöbb munkát a mintában, és elhelyezése az adatok osztályba TBlobField komponensek végezhetők betöltésekor vagy mentéséhez, vagy azon keresztül TBlobStream osztály komponens. Class TBlobStream bemutatja Xia specializált származó TStream osztály, amely egy BLOB mező az asztalra, mint a fizikai hely áram elosztását. Annak igazolására, a módszerek a kölcsönhatás a osztályú komponens TBlobField onnoe létre demonstrációs alkalmazást.

Példa mező használatával BLOB

Részletezettek szerint a projekt létrehozott egy alkalmazás, amely lehetővé teszi a felhasználónak, hogy mentse hangfájlokat (.wav) egy adatbázis táblában, majd játssza le őket közvetlenül az asztalról. Kezdje a projekt létrehozásával a fő formája az alkatrészek ábrán látható. 7.9. TTable komponens leírására Wavez táblázat szerint elrendezett az alias DDGUtils, vagy a saját Tabley tsu hasonló szerkezetű. Wavez tábla szerkezete az alábbi ábrán látható.

Ábra. 7.9.Glavnaya formában a táblázat

Wavez - egy példa segítségével BLOB mezőket

Az Add gomb segítségével letölthető audio fájlt a lemezről, és add meg, hogy az asztalra. kezelési rutin események OnClick Add gombra a következő:

eljárás TMainForm.sbAddClick (Sender: TObject);

ha OpenDialog.Execute ezután kezdődik

Ebben az eljárásban az első kísérlet arra, hogy végrehajtsa a módszer OpenDia- jelentkezzen. Ha ez a művelet sikeres, az adatforrás tblSound ne reklyuchaetsya a hozzáfűzése mód mező fájlnév van állítva, és BLOB mező típusú hullám neve lakott adatokat a fájl megadott paramétert OpenDialog. Figyeljük meg, mennyire hasznosak az osztály TBlobField terhelési FromFile módszer, és mennyire könnyű úgy néz ki, a fájl letöltési kódot BLOB mező.

Hasonlóképpen, kattintson a Mentés gombra eredmények megőrzése a külső

Úgy hangzik fájlt a fájl tartalmát, található a Wave Field. törzs kód

ry a kulcs a következő:

eljárás TMainForm.sbSaveClick (Sender: TObject);

A SaveDialog do kezdődik

A módszer még kevesebb kódot. Object SaveDialog ziruetsya inicializálni a mező értéke fájlnevet. Ha SaveDialog eljárást végzünk sikeres tapasztalatokat, annak érdekében, hogy megőrizzék a tartalmát a BLOB mező nevű fájl eljárás Save- ToFile kifogást tblSoundsWave.

Lejátszás gomb felvezető szövege az audio adatokat a BLOB mező, és továbbítja azokat az működni API PlaySound () a lejátszáshoz. A kód felvezető nem adott ugyanaz. Felhívjuk figyelmét, hogy ez a kód egy kicsit bonyolultabb a fenti kódot, hogy a Mentés gombra.

eljárás TMainForm.sbPlayClick (Sender: TObject);

// Létrehozunk egy patak BLOB

B: = TBlobStream.Create (tblSoundsWave, bmRead);

Screen.Cursor: = crHourGlass; // megjeleníti a homokóra

M: = TMemoryStream.Create; // Létrehozunk egy memória patak

// próbálja meg reprodukálni a hangot. kivételek átvitel,

// ha valami nem olyan amilyennek lennie kellene.

Win32Check (PlaySound (M.Memory, 0, SND_SYNC vagy SND_MEMORY));

B.Free; // felszabadítása

Először is, ez a módszer létrehoz egy példányt az osztály TBlobStream nevű B, a mező BLOB tblSoundsWave asztalra. Az első paraméter át a módszert TBlob- Stream.Create (), egy tárgy mező BLOB, és a második paraméter azt jelzi, hogy, hogy nyissa ki a patak. Jellemzően a patak fordult BLOB írásvédett ispol'uet Zuy érték bmRead és rögzítésére használt érték bmReadWrite.

Hogy nyissa TBlobStream patak bmReadWrite paraméter adatbázisba alkalmazhatónak kell lennie, Szerkesztés módban Insert vagy hozzáfűzése.

Ezután létrehoz egy osztály példánya M TMemoryStream áramlását. Ezen a ponton a normális egérmutató egy homokóra, amely azt jelzi, hogy a felhasználó számára a műtét időtartama. Takarmány B ezután másolva M. adatfolyam PlaySound () funkció, használt játszani az audio fájl, mint az első paraméter továbbítandó fájlnév vagy mutató a memória terület. Class TBlobStream nem biztosít hozzáférést az adatfolyamot az index és TMemoryStream osztály biztosítja ezt a képességet a tulajdon Memory. Ezzel, akkor hívja a PlaySound () függvény adatok reprodukálására, egy mutatót, amely tartalmazott M.Memory tulajdon. Befejezése után a Getting ezt a funkciót, akkor engedje el a flow és megjelenését helyreállítsák az egérmutatót. A teljes kódot a fő modul a projekt listán látható 7.4.

Listing 7.4. A projekt fő modul Wavez

egység Main; felületet használja

Ablakok, üzenetek, SysUtils, osztályok, grafika, vezérlők, Forms,

Dialógusok, ExtCtrls, DBCtrls, DB, DBTables, StdCtrls, maszk,