發表文章

Powerbuilder inet.PostURL用法

目前PB的開發我都是把它當成一個 Remote Client UI, 所以實際上它沒有連接資料庫,而完全是透過Coldfusion的服務頁面完成資料操作, 因此很多時候需要傳遞大量資料時,簡單的 inet.GetURL 函數就變得不好用了, 因此特地研究了inet.PostURL的用法,它的用法在Help上有兩個範例(我有修改過): 第一種 是簡單的呼叫一個頁面,並取得頁面回傳的HTML內容: (請注意 linet 和 n_internetresult 都是必須先建立的物件與類別, 可參考這裡 ) Blob lblb_args String ls_headers , ls_url Long ll_length n_internetresult lir_html inet linet linet = Create inet lir_html = CREATE n_internetresult ls_url = "http://www.mydoamin.com/testpage.cfm" lblb_args = blob("") ll_length = Len(lblb_args) ls_headers = "Content-Length: " + String(ll_length) + "~n~n" linet.PostURL (ls_url, lblb_args, ls_headers, 8080, lir_html) destroy lir_html destroy linet 上面這種方式並沒有傳遞參數,其實效果如同: linet.GetURL("http://www.mydoamin.com:8080/testpage.cfm",lir_html)

Powerbuilder如何建立網際網路服務

圖片
PowerBuilder 要建立網路服務,基本上需要兩個物件: inet internetResult inet直接建立(instance)就可以了,例如: inet linet linet = Create inet 而接收inet傳回的資料就需要 internetResult 了, 只是這個物件不能直接建立,必須先建立Class (類別), 並且寫入處理回傳資料的程式碼(script),再建立(instance)成為物件才能使用:

jQuery.cookie 如何讀取 Coldfusion cfcookie 的設定值

圖片
我們都知道在Coldfusion下設定cookie只需要使用 cfcookie tag, 例如我們設定一個cookie名稱叫cid,它的值為123456,有效期為1天: <cfcookie name="cid" value="123456" expires="1"> 如果用coldfusion來讀取這個只需要下: <cfset idvar = cookie.cid> 或 #cookie.cid# 就可以簡單讀取。 但是某些情況下,若是用到了javascript來讀取這個值,就好像不是這麼一回事了,

Using cookie in CFML

若是 Coldfusion 需要設定 Cookie 的變數,基本的用法如下: <cfcookie name="myid" value="a0001" expires="30"> name是key名稱 value是它的值 expires是它的存活期,可以是天數(如範例)、某一日期/時間、now(立即過期)、never(約30年) <cfcookie name="myid" expires="now"> <cfcookie name="myid" expires="12/20/2010"> 進階用法 domain=".mydomain2.com" 這是讓cookie指定給其他網域主機可以使用,一般cookie預設位置在你執行頁面的domain下。 path="/serverlet/login" 可以強制指定可用的網頁位置,一般的cookie是在該domain的root下所有子位置都可以使用,指定以後就只能在該位置下的頁面使用。 httponly 這個屬性是指定這個cookie只能由browser進行http傳送,不可以被其他script(如JavaScript)讀取,若要設定這個屬性必須要再設定其他的頁面屬性,可以參考  http://www.petefreitag.com/item/764.cfm 若要取得cookie設定的變數可以如下: #cookie.myid# 當然,最好取得cookie中自訂變數以前要檢查一下以免發生錯誤: <cfif StructKeyExists(cookie , "myid")>     <cfoutput>#cookie.myid#</cfoutput> </cfif>

let's play sound with powerbuilder

最近在用PB10做一些觸控裝置的UI(使用者介面,User Interface),雖然是觸控,不過使用起來的UE(user experience)跟 iPhone、iPad實在也差很多,無怪乎用過 iPhone之類的觸控裝至以後對於PC的各類觸控總覺得就是不喜歡。 題外話結束。 在設計這類的句有觸控介面的程式時除了UI要非常易懂、直覺以外,其他的輔助可能就需要那麼一點了。在設計這個CASE的UI時,尤其是數字鍵盤,如若加個語音提示或是導航,也許會減少許多輸入錯誤的機會。 目前PB10尚未支援 .NET ,所以依然使用API設計。 使用方式不困難,因為Windows就有內建一些標準函式可以用了 首先,定義函式呼叫 Function Long auxGetNumDevs() Library "Winmm.dll" Function Long auxSetVolume (Long uDeviceID , Long dwVolume) Library "Winmm.dll" alias for "auxSetVolume" Function Boolean sndPlaySound(ref String lpszSound , Long fuSound ) Library "Winmm.dll" alias for "sndPlaySoundW" 然後幾個基本常數 Constant Long SND_SYNC = 0 Constant Long SND_ASYNC = 1 Constant Long SND_NODEFAULT = 2 Constant Long SND_LOOP = 8 Constant Long SND_NOSTOP = 16 再來就是呼叫方式了,大部分常用的呼叫方式有兩種:同步 或 非同步(Synchronous / Asynchronous) 同步方式:採用同步方式的話,程序本身必須等待聲音檔撥完才能繼續執行。 ls_wav = "c:\piano.wav" sndPlaySound(ls_wav , SND_SYNC) 非同步方式:當聲音檔案播放時,

天外之音 - Cecile Corbel

圖片
Cecile Corbel被譽為是法國頂級吟唱女音歌手,原本有聽過其名,但是未曾有去特別聽過她的歌在一次偶然的機會下,得知宮崎駿2010年新作《借りぐらしのアリエッティ ノ》請她來配樂,在看過預告之後,發現風格還蠻搭的。 感覺非常的舒服,跟之前宮崎峻的搭配別有另一種味道,只是不知是不是宮崎峻是不是想要刷洗之前幾部票房毒藥的名聲,個人我倒是蠻期待這部 《借りぐらしのアリエッティ ノ》的。

將Datawindow資料存出成EDI檔案

PowerBuilder 的 DataWindow 本身可以將資料存成許多種格式,但偏偏就是缺了一種格式--EDI (Eletronic Data Interchange)-- 這種格式在台灣是早期非常普遍的格式,詳見 維基百科 、 經建會-解釋「通關作業XML電子資料交換格式」與EDI格式 ,主要多是公家機關使用,舉凡報稅、金融皆是使用此一格,久而久之就變成了早期台灣電腦最普遍的資料交換檔案格式。 這個格式的特色是每個欄位呈現在文字檔案中都有指定的長度(位元數),各欄位資料之間無分隔符號。所以每個ROW DATA呈現成一串字串,每個ROW字串的長度完全一樣。當然,這種格式的優缺點並非這篇的重點,所以這裡就不討論。 例如: 假設 CSV 格式的資料如下 黃小明,1978/3/2,台中市中山路120號,0922-222-113,15 李大海,1970/12/14台北市忠孝東路三段41號8樓-5,02-12345678,23 而轉成 EDI 格式就可能如此 黃小明19780302台中市中山路120號 0922-222-113 SIMON 15 李大海19701214台北市忠孝東路三段41號8樓-5 02-12345678 DAVID CHAU 23