2012年1月20日 星期五

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,每個檔案都必須自行建立與整理)

2012年1月9日 星期一

利用 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

當然英文看不輪轉的就看我這裡的吧,我已經把註解都中文化,並且稍微修改了一些。

2012年1月4日 星期三

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 可以得到與數值相同字元長度的字串。