發表文章

programming DLL using C/C++ for Powerbuilder external function

圖片
真的,用PowerBuuilder的人實在太少了,再加上又會寫C語言作為輔助的更是寥寥可數,只好自己用功一點『自學』了。 C語言有很強大的功能,但每種版本的C語言又有許多的不一樣(C、C++、C#、Object C...),真的學起來相當辛苦,如果電腦原理基礎觀念不好,操作C語言可能真的會成為夢饜,雖然C++與C#有許多強大的功能與函式,但是作為可以被『異種』程式語言呼叫的 獨立 函式庫,可能就非常不理想,因此需要以標準的C語言編譯,讓其他程式可以使用就是一個原則(這是我的想法,如果你有不同的意見歡迎提出)。 雖然C語言的原始碼可以跨平台,不過會由於編譯器的不同而有不太一樣的指令方式。 例如, 我的開發環境在Visual Studio 2005 底下,使用到某些C指令就會有所警告,像是: strcpy => strcpy_s strdup => _scrdup 諸如此類,雖然編譯會發生警告,但是還是可以使用。但是以 Visual Studio 的觀點來說,這些都是被列為 不安全 的指令。所以我撰寫的程式碼都是在符合 Visual Studio 環境底下設計的,若你需要使用到原本C語言原始指令,就可能要自行改寫或是參考一下MSDN的說明了。 好了,來說說如何製作一個標準的DLL供 PowerBuilder 使用吧(不一定限定PB,也可以是VB、Delphi之類): 首先,你必須建立一個新的專案(部分C開發環境沒有專案概念,例如:Dev-C,每個檔案都必須自行建立與整理)

利用 coldfusion 實作 CAPTCHA 驗證功能

圖片
 我當然知道這樣輸入很沒效率,但是這是目前比較好的防廣告文手段。 CAPTCHA,中文常被稱為『驗證碼』,其全名為 Completely Automated Public Turing test to tell Computers and Humans Apart (全自動區分計算機和人類的圖靈測試)。媽呀,好長的名字!!! 需要詳細瞭解者可以看 中文版維基的解釋 或是 英文版本 的。 如果需要輕鬆一點的可以看看 直角兄-淺談各式各樣的網路圖形驗證碼(Captcha) 因為網路上我真的找不太到中文關於使用原生 CFML 來設計 CAPTCHA 驗證碼的文章, 真的有點感嘆,所以就自己動手寫起來以備日後的紀錄與查找。 原始碼出處: http://www.bennadel.com/blog/873-Using-CAPTCHA-In-ColdFusion-8.htm 當然英文看不輪轉的就看我這裡的吧,我已經把註解都中文化,並且稍微修改了一些。

SQL [Sybase] 於輸出數值前方補上0

參考來自 這篇文章 ,只是 Sybase SQL 的指令不如 Microsoft 來得多,所以改寫成自己要的方式。 很多時候,公家機關特別喜歡的EDI格式都是固定長度的欄位資料,尤其是數字前面要補零的。 在 SQL 語法上就沒那麼便利像 Powerbuilder 的 String 指令,可以直接給一個 Format, 因此就需要一點變通了, 先來看一看舊式寫法好了,這是使用長度計算後的捕入方式: DECLARE @Number INT ,@Digits INT ,@Result CHAR(8) SELECT @Number  = 123 SELECT @Digits = 8 SELECT replicate('0',@Digits - char_length(Convert(varchar , @Number)))+Convert(varchar , @Number) Convert(varchar , @Number) 將該數值先轉換成字串值,使用 varchar 可以得到與數值相同字元長度的字串。

CFSCRIPT是什麼?

來聊一下什麼是 CFSCRIPT 吧: ColdFusion 使用的基礎語言是 CFML ,原文:ColdFusion Markup Language。 意思是 Coldfusion 標記語言,就跟 HTML 一樣屬於標記式 ( tag ) 的程式語法。 相關的資訊可以在 維基網站 查得到,這裡不再多述。 那麼有了 CFML 後為什麼又需要 CFSCRIPT 了呢?

Coldfusion如何使用編/解碼

以下程式碼可能需要 CF9 以上的版本,目前測試 Railo 3.3 可以正常運作。 傳遞資料的時候有時候須要將資料進行編碼或是解碼, 雖然 javascript 可以完成這樣的工作, 但有時候因為隱匿的關係不希望使用者端解譯其運作原理,所以最好是在 Server 端完成。 Coldfusion 可以處理基本的編解碼有三種形式: Hex: use the characters 0-9 and A-F to represent the hexadecimal value of each byte; for example, 3A. UU: use the UNIX UUencode algorithm to convert the data. Base64: use the Base64 algorithm to convert the data, as specified by IETF RFC 2045, at www.ietf.org/rfc/rfc2045.txt . 比較常見的大多是 Base64吧。 以下是完整的測試網頁:

在CFSCRIPT下使用Cookie

Coldfusion繼續來玩Cookie吧, 注意下面的操作可能需要 CF9 以上的版本, Railo 3.3 以上的版本執行上沒有問題。 繼上一篇 Using cookie in CFML 之後,如果想在 Cfscript 中使用cookie的操作要怎麼辦? 目前尋遍 adobe 官方文件 得到的結果是: Direct assignment of Cookie scope memory-only variables. You cannot use direct assignment to set persistent cookies that are stored on the user's system. 真是沒輒!! 但是還是有辦法操作的,就是利用 cf-tag 與 cfscript 混用: 首先,寫一段處理 cookie 的 Function : <cffunction name="setCookie" access="public" returnType="void" output="false">  <cfargument name="name" type="string" required="true">  <cfargument name="value" type="string" required="false">  <cfargument name="expires" type="any" required="false">  <cfargument name="domain" type="string" required="false">  <cfargument name="httpOnly" type="boolean" required="false&q

CFSCRIPT 基本陳述式

這段是給我自己常常忘記如何使用的註記: ColdFusion 的標準 tag 語法法以外,還有 script 語法, 下面是基本的 script 語法使用方式: script語法是包在一個 <cfscript> ... </cfscript> 之間的 每一行指令要用semicolon ; (分號)結尾,但備註與{大括號}結尾不用加 註解方式 //這是單一行的註解 mojo = 1; //這是放在指令後面的註解 /*     這是多行的     註解 */ 設定變數 foo = "foo bar";