發表文章

目前顯示的是 九月, 2011的文章

Indy -- 專業的Blocking

圖片
Indy (Internet Direct)與Dbexpress在Delphi中是我最喜歡的技術類型。
今天來說說它的特色之一 -- Blocking

很多人都會很好奇,SocketServer和idTCPServer主要的差異在於一個預設為non-Blocking,另一個則是恆為Blocking,但這兩者之間有什麼樣的不同呢?

我不知道!(被毆)

DBX4MySQL - 極緻效能的 Dbexpress Driver

圖片
鮮少使用MySQL,直到有人問我Dbexpress如何連接MySQL時,發現這比想像中要來得困難。

在尋找解決方案時,突然發現這個好物:DBX4MySQL (DBX for MySQL)

它的概念和Devart的MyDAC很像
MicroOLAP官方是這樣寫的:
Any MySQL libraries are not requred on a client workstation, even libmysql.dll

特殊符號的英文單字

資料來源:身為一個專業的程式設計師需具備的基本知識(一)

/ Slash (斜線)
\ Backslash (反斜線)
~Tilde (取代符號)
@ At sign, at (At 符號,At)

# Poundsign (井字號)

$ Dollarsign (錢符號)

^ Caret (插入號)

& Ampersand (And 符號)

* Asterisk (星號)

[ Open bracket (左開式方括弧)

] Close bracket (右關式方括弧)

( Open parenthesis (左開式圓括號)

) Close parenthesis (右關式圓括號)

: Colon (冒號)

, Comma (逗號)

-- Double dash (雙破折號)

... Ellipsis (省略符號)

' Single quote (單引號)

" Quote (引號)

= Equals (等號)

+ Plus,plus sign (加,加號)

! Exclamation point (驚歎號)

> Greater than (大於)

< Less than (小於)

? Question mark (問號)

. Period,dot (句號,點)

; Semicolon (分號)

- Hyphen (連字號)

— Dash (破折號)

_ Underscore (底線)

| Vertical bar (垂直線)

{ Open brace (左開式大括號)

} Close brace (右關式大括號)

% Percent,percent sign (百分比,百分比符號)

// Double slash (雙斜線)

[轉]FLEX AIR 儲存路徑的三種選擇

資料來源:AIR 文件存储路径三种选择

1.File.desktopDirectory 路径参数:C:\Documents and Settings\当前用户名\桌面 file = File.desktopDirectory.resolvePath("HelloWorld.txt");
var stream:FileStream = new FileStream()
stream.open(file, FileMode.WRITE);
var str:String = "Congratulations on AIR Save Path ";
stream.writeUTFBytes(str);
stream.close(); 2.File.applicationStorageDirectory 路径参数:C:\Documents and Settings\当前用户名\Application Data\应用程序项目名\Local Store var file:File = File.applicationStorageDirectory.resolvePath("HelloWorld.txt");
var stream:FileStream = new FileStream()
stream.open(file, FileMode.WRITE);
var str:String = "Congratulations on AIR Save Path";
stream.writeUTFBytes(str);
stream.close();
3.File.applicationStorageDirectory 路径参数:C:\Documents and Settings\当前用户名\My Documents var file:File = File.documentsDirectory.resolvePath("HelloWorld.txt");
var stream:FileStream = new FileStream()
stream.open(file, FileMode.WRITE);
var str:String = "Congratulations on AIR Save Path&q…

SQL Pretty Printer:好用的 SQL Formatter 工具

圖片
目前使用 SSMS,不論是2005還是2008,都沒有SQL Formatter功能,往往看到長得天荒地老的一行SQL,總是要費盡心力地來無盡的ENTER ENTER ENTER ENTER......

在網路上找了找,有個方便的工具:Instant SQL Formatter
線上格式化SQL工具,還蠻方便的,但並不支援UNICODE,所以出現非英文語時就會出現「???」,還真的是麻煩...
後來才發現,它有單機版本,名稱叫:SQL Pretty Printer
有提供 Desktop version, Add-In for SSMS, Add-In for VS or API
API就是利用網路連結到Instant SQL Formatter來處理。所以重點還是在前三項

因為我不只是用MS SQL,所以下載了Desktop Version來測試,以下就是展示畫面:
更棒的是,這個版本就支援UNICODE了!

再來就是這個產品,也是付費軟體,一個LICENSE $50

General SQL Parser for VCL 簡介

圖片
最近這一陣子大量在Delphi存取MS SQL,對於SQL指令的解析及輸入的繁瑣實在是頭痛。

比方說:
SELECTa.name,
b.id,
c.class
FROMa
JOINb
ONa.name=b.name
ANDa.money>100
JOINc
ONc.x>a.y
WHEREa.addressNOTIN(SELECT*
FROMxtable
JOINytable
ONxtable.id<>ytable.id


這樣的語法,如果要輸入到Delphi裡,對coding人員來說,一定是場惡夢,更不要說那些複雜到見鬼的SQL指令了,所以我們常會這樣打:

str := 'SELECT A.NAME, B.ID, C.CLASS FROM A JOIN B ON A.NAME = B.NAME AND A.MONEY > 100 JOIN C ON C.X > A.Y WHERE A.ADDRESS NOT IN (SELECT * FROM XTABLE JOIN YTABLE ON XTABLE.ID <> YTABLE.ID'

中間完全不間斷………

要不就是認命地自己斷行,結果中間多打或少打一個字,也得等到執行時期才抓得到錯誤…

這時候就會覺得JQuery或LINQ真是好物啊!

在這邊介紹一個好物:General SQL Parser VCL Version

它算是一個外掛的CLASS,利用USES的方式引入到專案中即可使用
目前還在深入摸索中,所以我們先借用它內附的DEMO吧!
上面的畫面可以看到我們KEY入的SQL有錯誤,也很明白的指出是缺少了「)」

這時我們再補上後執行,就會出現正確的結果了
當然,不會只是滿足於現有的Check syntax,所以我們還可以使用pretty print!
另外,還可以編成各語言的傳入字串:

但是這套工具價值不斐