2021/07/29

Delphi 7 Web 開發實戰 Part2 - 製作登入頁面


Delphi 7 Web 開發上第一個大魔王,來看看 WebBroker 如何順利呈現第一個登入頁面。 這篇至少遲到 10 年的教學內容,向你呈現! 😘 

 

其實關鍵就是在 Delphi 7 如何識別 MIME TYPE,什麼是 MIME TYPE?底下節錄 MDN 文件內容:

MIME 類型 (現在被更準確的稱作「媒體類型」(media type),但有時也被稱作「内容類型」(content type)) 是一種隨附文件發送的標識字符串。它主要用於標示文件類型、描述內容的類型:例如說,一個聲音文件就可能標為audio/ogg、或者圖像檔案就可能是 image/png。

它的目的與 Microsoft Windows 的副檔名相似。裡面的名字,是源自最初用於 E-Mail 的 MIME (en-US) 標準。 

在 Delphi 7 這些必須自行處理,當時沒有人寫這塊內容,導致使用 Delphi 的開發者大多認定開發 Web 必須走向 Java、ASP.NET、PHP 之流,種種的遺憾到今天我才有能力將這些遺珠以書本和影片的方式記錄下來,除了填滿當時自己的遺憾,我想也可以告訴現在還在使用 Delphi 7 的開發公司:

你可以做得更多,更好!

 

這篇內容在 Delphi XE (2011) 年開始,官方針對 MIME TYPE 已經完美處理,升級 Delphi,不論是否需要萬國碼支援,搭載更為便利的 Web 開發工具絕對是加速你開發專案的好幫手。


邀請你。


【Delphi in Depth DataSnap 網站應用程式全端開發】 PUBU - https://www.pubu.com.tw/ebook/201543 一天學一點 Delphi Youtube List - https://youtube.com/playlist?list=PLJshRqG16Wq5uC2ZJboLOYN6XhWuPXLRB Facebook - https://www.facebook.com/DaJiang.fans

2021/07/27

Delphi 7 Web 開發實戰 Part1 - 基礎架構

【Delphi In Depth DataSnap 網站應用程式全端開發】補充內容

Delphi 7 Web 開發上只能選 WebBroker 框架,如何從零開始打造網頁應用程式是到目前為止都沒有的課題。 

這篇至少遲到 10 年的教學內容,向你呈現! 😘

 

What is Firefox Last Version for Windows 2000?

Windows 2000 最後支援的 FireFox 版本為 12.0,可以在這裡下載:

https://ftp.mozilla.org/pub/firefox/releases/

2021/07/26

Devart DBX Driver 試用版關閉腦人的試用訊息方法


試用 Devart dbExpress driver 時,每當程式一執行便會跳出【此為試用版】的警告訊息,導致在測試上還必須多一個按按鈕的動作。

為此,Devart 提供了一個簡單的作法,只要註冊機碼【HKEY_LOCAL_MACHINE\SOFTWARE\Devart\dbExpress\SQL Server】裡,增加【ShowTrialMessage】的 Dword,內容設為 0,便可以在執行時期暫時關閉顯示試用版訊息視窗,其它產品也可如法泡製。

當然,試用 30 天到期時一樣會跳出【已過試用期】的錯誤。😘

和你分享 ❤

See also

2021/07/24

用CSS畫出IE限定的BorderColorLight、BorderColorDark等效果


最近在翻一些古早實作書籍,看到幾個別開生面的 HTML 屬性:BorderColorLight, BorderColorDark,使用 Chrome、FireFox 等支援 HTML5 的瀏覧器來開時會是這樣:


當時只覺得為什麼都是黑白線條,現在該是回來解謎的時候!😉

圖片中的上半部使用到 BorderColorLight, BorderColorDark 屬性,經查才知道是 IE 限定,之後在 IE 裡開啟效果如下:


效果還蠻好看的,原來表格也可以上色彩。

IE 真的好,用 CSS 才驚覺這 BorderColorLight 和 BorderColorDark 是神馬黑技術!

拆解 BorderColorLight 和 BorderColorDark

圖片來源:linuxtopia

Linuxtopia 的圖片真的太到位,連光源都送你了,Light 是指被太陽照到的地方,圖片以淺藍色表示;Dark 則是太陽照不到的地方,圖片以深藍色表示。

理解意思後,就要找 CSS 有沒有可以解的解方。

答案是有的,只是和 IE 相比在 CSS 上並不容易呈現,必須以上下左右獨立設置,回頭看看 IE,簡單明瞭!

原 IE 程式碼:

<table border="2" cellspacing="2" cellpadding="2" 
  width="99%" bordercolordark="#99cc66" bordercolorlight="#ffcccc">
  <caption>Eden IE Table Test</caption>
  <tr>
    <td>IE Column 1</td>
    <td>IE Column 2</td>
    <td>IE Column 3</td>
  </tr>
</table>

改 CSS 程式碼:

在修改前還要說明下,cellspacing 和 cellpadding 這兩個 HTML 屬性又是 IE 限定,這下又多了一道關卡:

圖片來源:維基百科

簡單的說就是填上一堆空白或留白,好在 CSS 這裡相對容易理解,就是多了一道標籤手工活。

<style>
.cssIETable
{
  border-top: 2px solid #ffcccc;
  border-left: 2px solid #ffcccc;
  border-right: 2px solid #99cc66;
  border-bottom: 2px solid #99cc66;
  border-collapse: separate; /*cellspacing */
  border-spacing: 2px;
}
.cssIETable TD {      
   padding: 2;  /*cellpadding*/
} 
</style>
<body>
<table class="cssIETable" border="2"
  width="99%">
  <caption>Eden CSS Table Test</caption>
  <tr>
    <td>CSS Column 1</td>
    <td>CSS Column 2</td>
    <td>CSS Column 3</td>
  </tr>
</table>
</body>


嗯,那復古風味感終於又回來了!😎


See also

2021/07/22

TStrings 應用 Part 3

TStrings 最核心的功能:鍵值配對,新手必學!

  • Blogger - https://grandruru.blogspot.com/
  • Facebook - https://www.facebook.com/DaJiang.fans

2021/07/21

Delphi CE 社群版版權到期延展方法


在【How to extend CE licence?】社群討論中顯示,當 CE 社群版的版權到期時,可以再到 Delphi 社群版下載頁面:https://www.embarcadero.com/products/delphi/starter/free-download/,使用同帳號再註冊一次,EMBT 系統會自動發送新的一組授權序號到你的信箱。

要注意的是這組序號只能註冊當下最新版的社群版中,若版號不一樣則無法使用,此時則必須重新安裝最新版本的社群版。

和你分享 ❤

2021/07/20

Delphi VCL 基礎入門系列 -- 例外處理 Exception Part 2

Delphi 例外處理大多會和元件釋放有關聯,這次舉個很常見的範例來和各位分享 😘


  • Blogger - https://grandruru.blogspot.com/
  • Facebook - https://www.facebook.com/DaJiang.fans

2021/07/17

Delphi VCL 基礎入門系列 -- 例外處理 Exception

神仙打鼓有時錯,腳步踏差麼人無!程式難免會有遇到出錯的時候,這時讓使用者直接看到系統錯誤訊息,可能使用者的感覺就像看到無字天書一樣難懂,進而對系統的不信任感增加。

 而例外處理就是一種系統和使用者溝通的橋樑,可以有效照顧使用者的情緒問題 ❤ 

2021/07/15

FastReport 報表檔 FR3 在 D7 升級 XE 前必須要了解的資訊

我家產品自從 D7 升級成 XE 後,在開發時,報表從零到有還蠻輕鬆的,FR (FastReport) 的報表產生器所產出的 fr3 報表定義檔會自動存為 UTF8 格式。上線後,才發現之前存在 D7 裡的 fr3 在 XE 中在中文的地方會出現亂碼。

D7 所設計的 fr3



XE 讀取 D7 設計的 fr3



沒有什麼比轉一半更令人揪心

在遇到問題時,如果這問題有一致性,就像文字轉碼一樣,全是亂碼的還容易處理:找到編碼,轉換,收工。

但現在的情況是 FR 轉出的 fr3 檔,有部分正常,有部分亂碼,這關最難解!

災難中的小確幸,確定是編碼問題

D7 只支援 Ansi,所以轉出來的 fr3 無庸至疑的是 Ansi,從圖片可知是採繁體中文大 5 碼  (Big5) 代碼頁 (CodePage=950)。

既然知道是 Ansi,現在就可以來猜亂碼的地方是什麼編碼。




我還是直接公佈答案好了:


沒錯,就是 Ansi 的 UTF8 代碼頁 (CodePage=65001)!


難解之處就在二選一

從上圖可以知道當切換代碼頁時,原本能顯示中文的地方會變成亂碼,反之亦然。哼哼,FastReport 真有你的,硬是不出升級工具。官方沒準備,只好自己硬上。

fr3 是 XML 格式,但


Delphi 的 XML Mapper 是很實用的 XML 解析工具,但無奈 fr3 是一個特規,它無法順利解析 fr3 的內容。

 

先說結論

經過在漫長的奮鬥之路後,總算是做出一個像樣的結果:


該顯示中文的地方能順利顯示中文,格式也採 UTF8,尤其是 XE 開始支援 Unicode 後,Ansi 文字處理變得相對麻煩,【System.AnsiStrings 單元】會是過這關的最佳利器!


和你分享 ❤

See also


2021/07/14

Delphi VCL 基礎入門系列 -- TStrings 應用 Part 2

今天再進一步聊聊 TStrings,和它的子類別 TStringList 😘

TStrings 本身很有戲,採取樣板設計模式提供給子類別 TStringList 進一步實作,但很多函式卻又設計給 TStrings,很容易陷入選擇障礙 🤣。

2021/07/13

Delphi VCL 基礎入門系列 -- Delphi 爬蟲初體驗 - 使用 TStrings

TStrings 在 Delphi 裡經常容易看到他,究竟要如何使用呢?

建一個專案來玩給你看! 😘

2021/07/12

Delphi VCL 基礎入門系列 -- 動態產生元件事件

上回提到動態產生元件,別錯過這次【動態產生元件事件】 的內容。

今天就來將這神秘的技術公開分享給大家。😘

2021/07/11

Delphi VCL 基礎入門系列 -- 動態產生使用者介面元件

【動態產生 UI】 在絕大多數的入門書裡都沒有提到。 今天就來將這神秘的技術公開分享給大家。😘 如果覺得喜歡或對你有幫助的話,邀請你和朋友一起分享。 

2021/07/10

Delphi VCL 基礎入門系列 -- 便條紙元件 Part 2

便條紙元件 TMemo,這個經典元件通常用來儲存記錄資訊,今天來將應用程式更進一步搭建起來 ❤

2021/07/09

Delphi VCL 基礎入門系列 -- 便條紙元件

便條紙元件在設計上是可以輸入多列文件,具體要如何使用呢?
影片中告訴你 ❤

2021/07/08

Delphi VCL 基礎入門系列 -- 單元結構和專案儲存

到目前為止已經寫了不少程式,這次要來了解一下程式碼的單元結構。

還有為了避免辛苦的成果因為當機、停電等意外造成程式碼遺失,適時地將專案存檔是很重要的,這次也會分享如何存檔 ❤

2021/07/07

Delphi VCL 基礎入門系列 -- 字串和幫助手冊

上回講數字和變數時才發現兩個沒提到的名詞:【字串 String】和【幫助手冊】。今天來補充介紹它們 ❤

2021/07/06

Delphi VCL 基礎入門系列 -- 數字和變數

上回介紹文字相加的方法,這次要把文字帶入數字變數,要如何做呢? 影片中告訴你 😘

2021/07/05

Delphi VCL 基礎入門系列 -- 綜合應用:加法計算機

已經知道文字方塊 TEdit 外觀長什麼樣子和讀取文字內容的方法,這次要來介紹文字內容相加工作。❤

2021/07/04

Delphi 文字方塊介紹

按鈕和文字方塊會是執業生涯中 99.9% 會交手的積木 (元件),一起來看看文字方塊長什麼樣子吧!😘

2021/07/03

2 分鐘成為一名合格的程式設計師

今天開始進行 Delphi 7 的基礎教學,為之後的 Web 教學做準備。

給自己一個投資 Delphi 的理由,就從今天開始。