邊走邊寫好了...一下子也想不出來要寫那些

 

(一)Hello World

(二)How to debug(除錯)

(三)讀取資料庫資料顯示在手機上

文章標籤

縹緲 發表在 痞客邦 留言(0) 人氣()

撰寫 blog 的初衷,就是希望能為 delphi 做點啥,這次繼續撰寫並未改變初衷。在 XE5 推出後,delphi 已經可以橫跨四大主要平台,包含 Windows、Mac、iOS 與 Android,你想要開發程式或 app 都輕而易舉,而且用的是同樣的語法、同樣的邏輯、同樣的 IDE 設計介面,加上撰寫出來的都是原生的 code,放眼望去市場上幾乎無人能敵,加上原本 RAD 的優勢,可以讓初學者很快的就撰寫出有模有樣的功能。

 

個人極為看好這樣的 delphi,有很好的機會重新在開發工具中佔有一席之地,也期望有新的新血能進入 delphi 的領域,讓 Object Pascal 語法可以繼續發光發熱。由於 delphi XE5 主要是為了開發 Android app 而生,加上市面上超過 6、7 成的設備都是使用 Android,設備本身也相對便宜,因此這次後續的文章,是盡量以撰寫給初學者的角度來看,讓沒接觸過 delphi 的使用者,也能一窺 delphi 的奧秘,見識 delphi 如何提高生產力,而非寫 iOS 要學 Objective C,開發 Android 又得學 Java,code 無法共用,就算有些解決方案,包括 PhoneGap 或 c#+Xamarin package,某些程度上能不用撰寫兩次,但有些是靠虛擬機運作,有些在撰寫 back end 的 code 時,無法同時兼顧設計 UI 的畫面,總是讓人覺得不夠直覺,而這一切,交給 delphi 就對了,也許 delphi 在開發 app 上不是銀色子彈,但是相信在一般的應用上絕對是綽綽有餘,困難的還是要開發何種創新應用,撰寫...不再是難事。

 

因為是希望撰寫給初學者看,所以就想起以前的快快樂樂系列叢書,看了總是讓人覺得很快就可以上手,很快可以獲得成就感,即便部分老鳥不是那麼認同啦...

文章標籤

縹緲 發表在 痞客邦 留言(0) 人氣()

距離上次撰寫 blog,已經過了一年半載,當時覺得 XE2 令人驚豔,但入門 iOS 該交代的部分,似乎交代得差不多了,也就沒有繼續下去...。

 

自從 2011 年 9 月份 XE2 發表到現在,delphi 仍然持續進步中,包含在 FMX Framework、Compiler、iOS 撰寫及除錯的改善,只是感受上不是那麼明顯,加上 apple 的設備貴桑桑,要繼續寫 iOS 的 app,就必須投資買新的 iOS device,如果只是買來開發玩玩,要投資的金額真的是讓人買不下手啊,so...

 

轉眼間 XE2 發表兩年後的現在,也就是在台北時間 2013/9/11 晚上,Embarcadero 在美國正式發表了 delphi XE5,最令人眼睛為之一亮的焦點,無不是聚焦在可以用 Delphi 撰寫出 Android 作業系統上原生的 app,這是多麼令人興奮的一件事,彷彿回到十多年前 delphi 在 Windows 平台上令人驚豔的盛況重現,小弟在 8/16 開始加入 XE5 beta 版本的試用,稍微提早近一個月感受到新版 XE5 的威力,如果您是 Delphi 的老鳥,相信稍微提點一下,1 min 內可以撰寫出在 Android 手機上實機可執行的 Hello World,10 min 內可以從 Windows 上的 DB 抓資料,顯示在手機上,而且不用寫任何一行 code,多麼令人興奮的一件事,於是...blog is come back

文章標籤

縹緲 發表在 痞客邦 留言(0) 人氣()

  上次提到 Server 端無法接收到中文參數,原因在於 URL 的網址,按照規定只能出現部分 Ascii 碼,既然如此,直接把中文當成 URL 的一部份當然就會出問題啦。如果想要瞭解這部分更詳細的說明,我 google 了一下,建議可以參考中興大學資管系呂瑞麟老師的文章-細談URL 編碼

  所以我們需要調整的是 client 端的 URL 要先進行過 UTF-8 的編碼,如何做呢?其實很簡單,只要呼叫 HTTPEncode 與 UTF8Encode,就可以正確傳遞參數給 server 端了,如下

  iOSWithEncode1  

  server 端接收到參數的畫面

  iOSWithEncode2

文章標籤

縹緲 發表在 痞客邦 留言(2) 人氣()

  讓我們繼續擴展上次的程式,上次寫到呼叫 DataSnap 的 Sample function,要改成由 client 傳參數給 server 端,回傳資料庫中對應的資料,對熟悉 delphi 資料庫寫作的各位來說相信應該不是難事,讓我們先假設有一個 table 名為 employee,資料內容如下

  iOSWithDB1  

  假設我們的目標是,在 client 輸入 EmployeeID,然後傳給 DataSnap Server 查找到這筆員工資料,回傳符合條件的 FirstName 欄位,該怎麼做呢?

  是的,依據前一篇的文章依樣畫葫蘆,DataSnap Server 端新增一個 method ,source code 如下:

  iOSWithDB2  

文章標籤

縹緲 發表在 痞客邦 留言(0) 人氣()

  上次講過 DataSnap Server,接下來就是透過 http 的方式跟 DataSnap Server 搭上線,DataSnap Server 提供兩個 sample method,分別是 

    function EchoString(Value: string): string; 與
    function ReverseString(Value: string): string;

  透過之前提過 Phil Hess 發表過 ns_url_request.pas,來測試看看是否可以呼叫 DataSnap 這兩個 smaple mehod

  DataSnap Server 上次已經建立好了,接下來新增一個 FireMonkey HD iOS 的 Application,然後在 Form 各擺兩個 button & Edit,命名如下圖所示

文章標籤

縹緲 發表在 痞客邦 留言(0) 人氣()

  如同文章標題 Title 所示,在使用 FireMonkey 開發 iOS 的程式上遭遇到亂碼問題,這陣子更新 blog 的速度比較慢,除了工作比較忙碌外,同時也是因為亂碼問題遲遲無法獲得解決,投入了不少時間研究處理的關係。

  記得在「How to Connect to a Database in XE2 @ iOS(二)」這篇文章內,曾經提過說中文沒有問題,是的,當時會認為沒問題,是因為當時撰寫的測試程式在兩個部分使用了中文,第一個部分是在設計階段的元件上於 property 屬性比如 Text 輸入中文字,另外一個部分就是透過 DataSnap 傳過來的 json 格式中文資料,可以正確顯示在執行階段的元件上,既然設計階段打的中文與執行階段指定 property 顯示中文都沒有問題,自然而然會認為那麼中文部分應該正常,沒想到後來會踢到鐵板,而且 google 很久也找不出答案。

  遇到亂碼的案例很簡單,比如在 Button1OnClick 的事件上,寫下 Button1.Text := '中文',但在執行的時候,實際上 Button1.Text 上會顯示成亂碼,why why why?不是說 json 的資料傳過來一樣是丟到元件上顯示沒問題嗎?是,我也是這樣想,當時遇到的時候心中真是一個不瞭解...嘗試了很多編碼、解碼的作法,甚至直接給10進位的 Unicode,比如 Button1.Text := #20013#25991,但是結果依然不如預期,最後只好訴諸 Embarcadero 的 QualityCentral,想說這應該是一個 bug 吧,這也是 10 多年來第一次提報問題給官方的 QC 來處理。

  Embarcadero 的 QC 也不負所託,一來一往間的確解決了我踢到的鐵板,過程就不贅述了,直接說原因

  1.一個已知的 iOS simulator 問題

文章標籤

縹緲 發表在 痞客邦 留言(3) 人氣()

    這次先講 DataSnap Server,其實之前已經有提過,沒有辦法透過資料庫元件直接連到後端資料庫,剩下的就只有利用 DataSnap Client 或走 Http 的 solution 的方式跟後端主機連線來獲得資料,前者要靠 Embarcadero 推出 DataSnap Client for iOS 的版本才有辦法達成,後者比較快的方式就是走目前業界流行的 RESTful solution。

    何謂 REST?我認為維基百科上就已經說的很清楚了...,可以參考看看

    http://zh.wikipedia.org/wiki/REST

    要完成 RESTful 的後端,利用 Delphi 來做真是簡單到一個不行,當然這是指陽春的版本,如果要做到控管連線數量、流量觀察等等,比較完整的主機管理程式當然那就另當別論…。要做一個陽春版的 RESTful Server,其實只要開啟 Delphi 專案,選擇 DataSnap REST Application,然後按照 Wizard 下一步下一步一直按就完成啦,夠簡單了吧。你可以參考之前提過的這篇文章,其中「Writing the DataSnap server」這個小節就是在講這部分,這裡就不一一貼圖了,完成後會有兩個 default 供你參考或測試用的方法,分別是 EchoString & ReverseString,所有都按照預設,則執行後的畫面會像這樣

    DataSnap Server 1  

文章標籤

縹緲 發表在 痞客邦 留言(2) 人氣()