国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

FUNCky 的使用

2024-07-21 02:09:19
字體:
供稿:網(wǎng)友

商業(yè)源碼熱門下載www.html.org.cn

funcky 的使用
張健姿 01-6-26 下午 04:31:30

funcky 是 一 個powerbuilder 應(yīng) 用 程 序 庫, 它 提 供 了16 位 和32 位 兩 種 應(yīng)用 庫, 其 中 包 含 了 大 量 的 底 層 函 數(shù), 免 去 了 開 發(fā) 人 員親 自 動 手 使 用c 語 言 編 寫 動 態(tài) 鏈 接 庫 來 處 理 很 多 常 用的 諸 如 文 件 操 作、 字 符 串 操 作、 位 操 作 等 功 能。 使 用funcky 能 大 大 提 高 開 發(fā) 效 率。 本 篇 簡 單 講 述 一 下 如 何 在powerbuilder 中 使 用funcky。 將funcky 加 到 您 的 應(yīng) 用 中 funcky 提 供 了16 位 和32 位 的 運 行 庫funcky.dll、funcky16.pbl 和 funcky32.dll、funcky32.pbl,應(yīng) 用 程 序 調(diào) 用 的 函 數(shù) 或 過 程 都 在 該 動 態(tài) 鏈 接 庫 和pbl 文件 中。 安 裝 完funcky 后, 兩 個 動 態(tài) 鏈 接 庫 被 拷 貝 到windows 的system 目 錄 下, 兩 個pbl 則 在 安 裝 的 目 錄 下。 使 用 時 將 用 到 的函 數(shù) 在 應(yīng) 用 的global external function 或local external function 中 作 相 應(yīng)的 聲 明 即 可, 如 需 使 用 全 部 函 數(shù) 則 可 以 將 整 個pbl 文 件加 到 您 應(yīng) 用 的 搜 索 庫 中。 函 數(shù) 原 型 定 義 可 以 從 相 應(yīng) 函數(shù) 幫 助 中 獲 得。 除 幫助 文 件 中 提 供 的 函 數(shù) 以 外, 在funcky.dll 中 還 有 其 它 的 一些 未 公 開 的 函 數(shù) 在funcky.pbl 中 被 調(diào) 用, 這 些 函 數(shù) 用 戶 也可 以 使 用。 使 用funcky 要 注 意 的 幾 點· 在 應(yīng) 用 中, 只 將 使 到 的 函 數(shù) 加 到 函數(shù) 原 型 聲 明 中 去, 不 要 聲 明 過 多 的 函 數(shù) 原 形, 否 則 運行 時 系 統(tǒng) 可 能 會 報 函 數(shù) 原 型 不 匹 配 錯 誤; · 如 只 需 使 用 少 量 函 數(shù), 用 戶 盡 量 不要 將funcky.pbl 加 到 應(yīng) 用 中 使 用, 因 為 那 將 需 要 大 量 的 函數(shù) 原 型 聲 明 才 能 編 譯 通 過; · 某 些 函 數(shù) 原 型 是 以"_" 開 頭 的定 義, 這 些 函 數(shù) 都 在funcky.pbl 中 有 定 義, 使 用 者 可 以 直接 使 用 該 函 數(shù), 將funcky.pbl 中 的 代 碼 直 接 拷 貝 到 自 己 的pbl 中, 或 自 己 編 寫 相 關(guān) 的powerbuilder 函 數(shù)。 funcky 函 數(shù) 分 類 funcky 一 共 提 供 了12 類 的 函 數(shù): · 位 操 作 函 數(shù) · 塊 和 內(nèi) 存 操 作 函 數(shù) · 數(shù) 據(jù) 轉(zhuǎn) 換 函 數(shù) · dbf 文 件 訪 問 函 數(shù) · 磁 盤 訪 問 函 數(shù) · dos 環(huán) 境 函 數(shù) · 日 期 函 數(shù) · 低 級 文 件 操 作 函 數(shù) · 轉(zhuǎn) 換 函 數(shù) · 字 符 串 操 作 函 數(shù) · 系 統(tǒng) 資 源 函 數(shù) · 時 間 操 作 函 數(shù) 舉 例 說 明 下 面我 們 舉 幾 個 例 子, 說 明 一 下 這 些 函 數(shù) 的 使 用。 我 們 著重 介 紹 的 是dbf 文 件 訪 問, 塊 操 作 和 內(nèi) 存 操 作、 低 級 文件 操 作 等 這 幾 類 函 數(shù), 這 是 大 家 在 應(yīng) 用 中 經(jīng) 常 要 用 到的, 而powerbuilder 本 身 卻 不 提 供 的 操 作。 1. 我 們 經(jīng) 常 在powerbuilder 應(yīng) 用 中 遇 到 有 關(guān)圖 象 存 儲 和 顯 示 的 問 題, 而 在 這 方 面,powerbuilder 本 身 的處 理 功 能 較 弱, 在 實 際 應(yīng) 用 中 經(jīng) 常 無 法 達(dá) 到 用 戶 的 要求。 我 們 可 以 借 助funcky 的 函 數(shù) 來 處 理 圖 象 文 件。 例 如 在 應(yīng)用 中 需 要 存 儲、 查 詢、 顯 示 和 打 印 照 片, 一 般 開 發(fā) 人員 使 用ole 嵌 入 的 方 法 來 做, 但 是 如 果 獲 得 的 每 一 幅 照片 的 規(guī) 格 不 完 全 一 樣, 這 樣 顯 示 和 打 印 的 效 果 就 很差, 采 用 這 種 方 法 制 作 通 行 證 或 身 份 證 上 的 照 片 幾 乎是 不 可 用 的。 解 決 這 一 問 題, 所 使 用 的 較 簡 單 的 方 法是, 以bitmap 格 式 在 數(shù) 據(jù) 庫 中 存 放 圖 象 數(shù) 據(jù), 顯 示/ 打 印時, 將 數(shù) 據(jù) 取 出 在 本 地 保 存 成 為 臨 時 文 件, 根 據(jù) 圖 象的 尺 寸 進(jìn) 行 等 比 例 縮 放 顯 示 在 圖 象 控 件 上, 這 樣 既 能達(dá) 到 界 面 的 要 求, 又 能 獲 得 高 質(zhì) 量 的 圖 象。 我 們 可 以借 助funcky 函 數(shù) 來 解 決 這 樣 幾 個 問 題: o bitmap 圖 象 文 件 存 儲 效 率 不 高, 在 數(shù)據(jù) 庫 中 占 據(jù) 的 空 間 過 大, 可 在 存 入 前 使 用fcompress 函 數(shù)對 圖 象 文 件 進(jìn) 行 壓 縮: 函數(shù) 聲 明: function long fcompress(string s,string d)library "funcky32.dll"http://定義壓縮函數(shù)原型script:retcode = fcompress(ls_path, "_tmp.tmp")//壓縮文件choose case retcode...//檢查返回值end choose...//將壓縮后的文件保存到數(shù)據(jù)庫中fdcompress 的 壓 縮 效 率 不 高, 但 速 度 很 快, 還 是 值 得 使 用的。 o bitmap 圖 象 的 寬 和 高 保 存 在 該 文 件 的第18 和 第22 個 字 節(jié) 中, 不 用funcky 函 數(shù) 很 難 讀 出 這 兩 個 字節(jié) 的 信 息。 下 面 一 段 程 序 是 解 壓 縮 和 計 算bmp 圖 象 的 寬和 高 函數(shù) 聲 明: //定義從二進(jìn)制數(shù)據(jù)中讀取一個長整形函數(shù)原型function long _blob2long(ref blob b, uint o)library "funcky32.dll"http://定義解壓縮函數(shù)原型function long fdcompress(string s,string d)library "funcky32.dll"script:... //從數(shù)據(jù)庫中將數(shù)據(jù)取出保存在文件$fgd.bmp中status = fdcompress("$fgd.bmp","_fgd.bmp")//解壓縮choose case status...//檢查返回值end choose...//將_fgd.bmp讀入blob變量picll_width = _blob2long(pic,18) //讀圖象寬度ll_height = _blob2long(pic,22) //讀圖象高度//根據(jù)指定的寬和高計算縮放比例bili_width = integer(sle_width.text) / ll_widthbili_height = integer(sle_height.text) / ll_height//得到顯示寬度和高度p_width = ll_width * min(bili_width, bili_height)p_height = ll_height * min(bili_width, bili_height)我 們可 以 看 到funcky 函 數(shù) 的 使 用 非 常 簡 單, 能 夠 輕 松 做 到 在powerbuilder 中 很 難 實 現(xiàn) 的 操 作。 2. 在 應(yīng) 用 中 您 可 能 會 遇 到 直 接 讀 取dbf 文 件 的 情 況, 處 理 這 類 問 題 的 方 法 一 般 有 兩 種 經(jīng) 典 的方 法: 一 是 使 用 數(shù) 據(jù) 窗 口 讀dbf 文 件, 二 是 指 定 一 個 磁盤 目 錄 作 為 數(shù) 據(jù) 區(qū), 用odbc 連 接 這 個 目 錄, 使 用 時 規(guī) 定用 戶 必 須 將dbf 文 件 拷 貝 到 這 個 目 錄 下。 但 是 這 兩 種 方法 都 缺 乏 靈 活 性, 而 在funcky 中 卻 提 供 了 直 接 讀dbf 文 件的 函 數(shù)。 在funcky32.pbl 中 有 一 個dbffieldget() 函 數(shù) 可 以 獲 取 該dbf 文 件 的 字 段 名 稱。 不 過 根 據(jù) 我 們“ 盡 量 不 使 用funcky32.pbl” 的 原 則, 自 己 手 工 編 寫 一 個 實 現(xiàn) 該 功 能 的 代 碼。 定 義 外 部函 數(shù): function long dbfopen(string f, int o)library "funcky32.dll"function boolean dbfeof(long d)library "funcky32.dll"function int dbfclose(long d)library "funcky32.dll"function long dbfskip(long d, long c)library "funcky32.dll"function uint dbffieldsize(long d, int p)library "funcky32.dll"subroutine _dbffieldget(long d,int p,ref string b)library "funcky32.dll"function int dbffieldpos(long d,string n)library "funcky32.dll"script://以讀寫和拒絕其他用戶寫的方式打開dbf數(shù)據(jù)庫do while 1 = 1dbf = dbfopen(ls_file, 2 + 32)if dbf <> 0 thenexitend ifloop//讀dbf數(shù)據(jù)//ii_xx_count是需要讀的dbf字段的總數(shù)//is_dbf[]是字段名稱數(shù)組do while not dbfeof(dbf)for i = 1 to ii_xx_countp = dbffieldpos(dbf, upper(is_dbf[i]))//獲取字段的位置ls_tmp = space(dbffieldsize(dbf, p) + 1)//根據(jù)字段的大小初始化存放數(shù)據(jù)的變量_dbffieldget(dbf, p, ls_tmp)//將數(shù)據(jù)讀入到ls_tmp中nextdbfskip(dbf, 1)//使dbf操作指向下一條記錄loopdbfclose(dbf)//關(guān)閉打開的dbf文件這 樣直 接 讀 取dbf 信 息, 給 應(yīng) 用 帶 來 的 好 處 是 顯 而 易 見 的。 3. 對 于 數(shù) 據(jù) 庫 的 用 戶 管 理, 我 們 一 般會 采 用 在 數(shù) 據(jù) 庫 中 建 立 一 個 表, 記 錄 用 戶 名 稱、 口 令等 信 息, 在 用 戶 登 錄 時, 應(yīng) 用 檢 索 這 個 表 的 信 息, 同用 戶 輸 入 的 內(nèi) 容 核 對。 按 照 一 般 系 統(tǒng) 管 理 的 規(guī) 定, 每一 個 用 戶 的 口 令, 其 他 人 是 無 法 在 系 統(tǒng) 中 查 到 的。 即使 是 系 統(tǒng) 管 理 員 也 只 有 刪 除 登 錄 用 戶 的 權(quán) 利, 而 無 法獲 取 用 戶 的 口 令。 可 是 由 于 系 統(tǒng) 管 理 員 可 以 讀 取 數(shù) 據(jù)庫 中 的 每 一 張 表, 因 此 他 是 就 有 機 會 看 到 用 戶 的 登 錄口 令 的, 因 此 我 們 應(yīng) 當(dāng) 在 口 令 字 段 存 入 數(shù) 據(jù) 庫 前 對 其進(jìn) 行 加 密。funcky 提 供 了encrypt() 函 數(shù) 和decrypt() 函 數(shù) 就 可 以 用來 完 成 這 一 工 作, 這 就 避 免 了 程 序 員 手 工 編 寫 加 密 算法 的 麻 煩 了。 此 外,funcky 在16 位windows 下 還 有 許 多 底 層 的 操 作, 包 括 中斷 的 調(diào) 用 和 直 接 操 作 磁 盤 的 函 數(shù), 可 以 用 以 軟 件 加 密的 工 作, 這 里 就 無 法 詳 述 了。 總 之,funcky 提 供 了 較 多 的函 數(shù) 功 能, 有 條 件 的 讀 者 可 以 在 以 后 的 應(yīng) 用 中 嘗 試 使用, 相 信 會 給powerbuilder 的 開 發(fā) 帶 來 一 定 的 方 便。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 隆德县| 化隆| 吉木萨尔县| 栾城县| 温宿县| 铜山县| 裕民县| 永安市| 旌德县| 凉城县| 赤峰市| 昌黎县| 自贡市| 惠东县| 沂南县| 老河口市| 攀枝花市| 田东县| 晋城| 丹江口市| 贺兰县| 丹东市| 灯塔市| 固阳县| 琼中| 明水县| 龙海市| 庆阳市| 南郑县| 清原| 泸西县| 潮州市| 沁阳市| 吉安市| 都安| 宜春市| 商河县| 册亨县| 库车县| 苍梧县| 连州市|