Delphi的數字類資料型態&函數

數字類的資料型態

Type Storage size Range

Byte 1 0 to 255
ShortInt 1 -127 to 127
Word 2 0 to 65,535
SmallInt 2 -32,768 to 32,767
LongWord 4 0 to 4,294,967,295
Cardinal 4* 0 to 4,294,967,295
LongInt 4 -2,147,483,648 to 2,147,483,647
Integer 4* -2,147,483,648 to 2,147,483,647
Int64 8 -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

Single 4 7 significant digits, exponent -38 to +38
Currency 8 50+ significant digits, fixed 4 decimal places
Double 8 15 significant digits, exponent -308 to +308
Extended 10 19 significant digits, exponent -4932 to +4932

* Note : the Integer and Cardinal types are both 4 bytes in size at present (Delphi release 7), but are not guaranteed to be this size in the future. All other type sizes are guaranteed.

Read more →

Delphi的If…then..Else

在條件事選擇的時候,通常可以用幾種選擇性結構進行判斷
在php中 if 條件式是這麼下的

if (a!=0){
做什麼事;}else{
做另一件事;
}

如此一來,完成一個選擇性的結構
在delphi中,法語有一些些的不同,在if..than…else的結構中,不能放;(if條件句結束),如果要放;,只能加在begin…end中
下面是做按鈕的開關sample
If Edit1.Text=” Then
Button1.Enable:=false
Else
Button1.Enable:=true; <—最後要加分號做結束

多內容的If…Then…Else語法
If Edit1.Text=” Then
begin
Button1.Enable:=false;
Button2.Enable:=false;
Button3.Enable:=false;
end <—第1個End 不加 ; 最後一個End 才加;
Else
begin
Button1.Enable:=true;
Button2.Enable:=true;
Button3.Enable:=true;
end
;

Delphi的資料庫連接

1.dbexpress
2.ado
3.myodbc
4.3rd party object(Tmysql/zeros/MyDAC)

Tmysql
http://www.productivity.org/projects/tmysql/
看了介紹,Tmysql沒有使用TDatabase TQuery等,也不是使用BDE/ODBC
最後的版本在2002年的2月12日發佈
我用的是 Delhpi And C++ Builder 2009版的,不知道有沒有支援。

TDatabase是使用BDE(Borland Database Engine)
TQuery則是要設定ODBC資料來源(回想起當初出社會時,安裝軟體設定ODBC的痛苦)

MyDAC元件在網站是這麼介紹的
MySQL Data Aceess Componets,提供的物件蠻多的,請參考下圖
mydac_palette[1].jpg

下載頁在這裡,有免費版的可以下載
http://www.devart.com/mydac/download.html
重點是,有支援Delphi and C++ Builder 2009
而且,還有支援其他多種DB的連線
Oracle
SQL Server
InterBase
Firebird
PostgreSQK
(我又想去網路上找不是試用的版本了…唉宿命)
使用的是ADO.NET data provider, dbExpress drivers(不知道會不會連線成功)
首先,我沒有看到MyDAC的正式版或是破解版,所以咧,先用測試版跑看看。
在安裝的時候,出現了下面的訊息。
竟然找不到Hxds.dll
安裝MyDAC 5.8 for delphi and C++ Builder 2009,遺失Hxds.sll
經檢查,這是一隻微軟Help的元件,不過訊息上面說,這不是一個fatal(致命的錯誤),安裝會繼續完成。
這個錯誤訊息,一共出現了2次,我在想他是不是呼叫這件元件,來顯示他們的說明,anyway,不重要。
執行CodeGear RAD Studio 2009中的delphi 2009,出現了MyDAC的提示訊息,告訴我,我有60天的試用期。

哈哈~裝好了,就一個字爽
而且連接資料庫變的超簡單的

不過,看到他的價目表,嚇到我閃尿了!
標準 1人版 $129.95 USD金 群組版(4U) 299.95USD 網站版(同一間公司不限人數) $549.95 USD
專業 1人版 $199.95 USD金 群組版(4U) 499.95USD 網站版(同一間公司不限人數) $899.95 USD
其他的不敢看下去了(害我又想去找其他的版本了….)

* TMyConnection – lets you set up and control connections to MySQL database server
* TMyQuery – uses SQL statements to retrieve data from MySQL table or tables and supply it to one or more data-aware components through a TDataSource component and provides flexible data update functionality
* TMyTable – allows to retrieve and update data single table without writing SQL statement
* TMyStoredProc – executes stored procedures and functions
* TMyCommand – executes SQL statements and stored procedures, which do not return rowsets
* TMyScript – executes sequence of SQL statements
* TMyUpdateSQL – lets you tune update operations for a DataSet component
* TMyDataSource – provides an interface between a MyDAC dataset components and data-aware controls on a form
* TMySQLMonitor – allows to monitor dynamic SQL executing in MyDAC based applications
* TMyConnectDialog – allows you to build custom prompts for usernames, passwords, and servers
* TCRDBGrid – extends TDBGrid capabilities, provides visual access to filters and incremental search
* TVirtualTable – provides dataset functionality for data that has no real database connection
* MyDataAdapter – .NET component, uses TDataSet as data source for retrieving and saving data to System.Data.DataSet

MyDAC Professional Edition and MyDAC Developer Edition include the following additional components:

* TMyLoader – provides quick loading data to MySQL database
* TMyDump – serves to store a database or its parts as a script and also to restore database from received script
* TMyBackup – serves for backup copying specified tables on the server
* TMyServerControl – serves to control the server and execution of standard service tasks
* TMyEmbConnection – is used to establish connection to MySQL Embedded server
* TMyBuilder – serves to manage SQL Builder for MySQL Add-in
* TMyMetaData – retrieves metadata on specified SQL object
* TCRBatchMove – transfers data between all types of TDataSet descendants

另外,我找不到zeros的資料,網友說的不是很清楚。
The ZeosLib is a set of database components for MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle and SQLite for Delphi, FreePascal/Lazarus, Kylix and C++ Builder.
網友寫錯了,是zeos,從zeoslib或sourceforge都可以下載
免費,開源,而且支援的好像也不少
只是不知道好不好用而以
剛才看了官網和下載完package之後
我失望了
因為目前6.X的版本,並不支援delphi 2009(12.0),只支援 Delphi V11
我再找看看其他delphi連接mysql的元件好了

剛才看到有網友用 mysql windows版的元件+dbExpress來連接Mysql,也許操作起來沒有像MyDAC這麼方便,不過,最少是不用錢的,而且MySQL元件,只要去下載Win 32的版本,可以取得,如果要做軟體發佈的時候,只要把libmySQL.dll copy到windows\system32下,就可以了,簡單方便許多。
有興趣的,可以參考這篇文
http://www.jackforfun.com/2008/11/delphi-2009-dbexpress-unicode-mysql-50.html?showComment=1247908318404#c6037813891210543481

Access violation at address in module 'libmysql.dll'. Read of address.
可是我照上面的試來來做
卻是有問題的,之前這台有灌過xampp和apps,不知道是不是元件的問題….唉,先測別的先

Delphi的變數轉型

因為,在php裡面,所有的變數都是自動轉型的,數字和字串都很好操作,也不會出錯,但是在直譯時,就是要犧牲部份的效率(其實感覺不太出來)。

VB和Delphi都要對變數的種類進行指定,而且,操作時,需要自己選擇轉型(網路上有看到別人寫,delphi也可以自動對變數進行轉型,但是不知道怎麼做)。
沒有關係,就照正統的方式來做吧!

整數變字串
inttostr();
字串變整數
strtoint();
ex:
inttostr(3)=’3′,strtoint(‘3’)=3
相似的轉型涵數還有
floattostr();
strtofloat();

Delphi再一次親密接觸

其實,很久之前就想學Delphi了,因為之前自己有玩過VB,還寫了一個小的庫存管理程式,不過因為後來工作的內容都在玩硬體,也就沒有有再寫VB。

Delphi第一次是在9年前,工作的關係,有一個工程師用Delphi,他說操作和開發起來比VB還要快,而且很結構化,容易學習;當然,這是他個人的感受,因為那時玩了一陣子VB,也就沒有花太多的心力去學Delphi。

Delphi,是一種從Pascal(巴斯卡)演變而來的語言,後期的工具加入了視窗和物件導向的功能,讓使用者在Windows上可以很容易開發程式,當然,有一陣子推了一套Kylix系統,就是Delphi的linux版,設計師可以在很少的修改下,就可以在linux上開發出一樣功能的軟體或系統,當然,後來,就不了了之。

因為工作的關係,在三年多前,開始使用php+mysql來開發一些系統,不論是工作上,還是自己架的網站,因為Web Base的關係,使用者的學習曲線變直了,容易上手,但是單機版上跑Php,還是限制很多,光是環境和資料庫,應該就會吃了不少的資源。當然,Delphi運作模式是不同的,假設是三層式的架構,不用經過apache,自然,資源會少一點,但是資料庫的部份,可能就不一定了。

為什麼回來玩delphi呢?因為工作效率的關係,之前架設的網站,大多是使用hosting的方式,如果所有程式都在上面開發,很容易就把DB的存取次數用完(有幾個hosting service provider只可以在每小數中存取20000次),而且,也受限於網路傳輸的速度,如果可以在單機上跑,光個Access,可能就很夠用了,那個執行效率,自然就不用比了。

基本上,delphi程式運算的效能,只是吃單機上的資源(程式,dll),再對DB做access,分散在各Client的運算率能,就可以增加整體工作的效率,降低server建置的成本,一個個人電腦建構的db server,應該就足夠了,除了以上理由,另外delphi連接周邊配備的能力也比php強上許多,對於資料的收集以及分析,我想,這是我著眼的。

至於為什麼不回來用vb/vb.net呢?visual c++/c#/java這些語言也很不錯啊!我想,我的骨子裡是個反微軟的傢伙,能不用微軟的,就不用微軟的;網路上一堆人在講power build和delphi的支持與擁戴,其實當初我也想了很久,要用delphi還是power builder,反正解決方案這麼多,delphi都推25年了,基本的pascal語言,沒有太多的改變,假如,每3年5年,就要學新一種的開發環境,有一天,我會老,學的速度不如年輕人的時候,我還剩下些什麼?至於我的論點是不是對的呢?留給時間去解答。

免費Office 微軟迎戰Google

終於等到免費版的office了,授權標準版的office 2007,一套現在要價12500,微軟在推免費office之後,這筆花費可能可以省下來。

新聞摘錄如下
更新日期:2009/07/15 04:09

〔編譯陳成良/綜合14日外電報導〕 微軟 與 Google 的大戰越演越烈!繼Google擬研發個人電腦作業系統Chrome挑戰微軟霸主地位後,微軟13日也不甘示弱地宣布,將推出免費的網路版Office軟體,迎戰Google在線上應用軟體市場的鯨吞蠶食。

免費網路精簡版

微軟預定明年上半年推出最新版「Office 2010」,除傳統桌面執行版本外,也將提供可透過瀏覽器執行的免費網路版,包括Word文書處理、試算表Excel、簡報工具PowerPoint及 Outlook通訊程式的「精簡版」,準備與Google 3年前推出的「Google Docs」線上辦公室軟體一較長短。

說穿了,不過是一種雲端技術的實現,早在很久之前,網路上就有網路版的文書作業系統,叫作write it,後來韓國也有推出類似office的網路軟體,如果大家都把東西放在網路上,所有的服務都是網路系統提供,我想,免費officeq還真的有一定的吸引力。不過說真的,以google的docs為例,我以前為了資料備份的需求,所以把論文初稿(沒有完稿的都叫初稿),放在google docs上,實際上呢?破的亂七八糟,很多格式都跑掉了,其實檔案不大,才20頁左右的內容。

免費office的提供,我想一定是微軟最有相容性,因為他們是技術母廠,不過,光是網路速度的問題,就不可能全公司的人全都使用網路上免費的office,光是帳號和安全性的問題,我想可能就無法滿足許多企業的需求。

免費office,也有增加網路使用者對於微軟系統使用的黏度,比如說現在微軟推出的bing搜尋,可能就會內建在免費的office中,對於google的搜尋龍頭地位是有影響的。另外,google docs,早上提供共筆的寫作模式,類似群組軟體的功能,讓寫好的東西大家可以分享,當然,如果要拿來管理專案,也有一定的方便性。姑且不論免費的office會不會取代安裝版的office,微軟這麼做,可見雲端技術的推動,已經在默默進行中。

之前看到,蘋果也有類似的技術,讓使用都可以在網路上編輯圖案,再儲存在網路上,以使用時間和容量來計算,天啊!怎麼這麼東西在推,要全部測過,玩過,還真的不是那麼簡單。免費office,等別人用過沒有問題,我再測測唄,我可不想當小白鼠。

IE7/Firefox3開啟後 出現錯誤訊息

這幾天公司的電腦,不論IE還是Firefox,只要一開啟就會出現錯訊訊息,小紅傘沒有發現病毒,使用Google的免費掃木馬軟體(Spyware Doctor),倒時掃出一堆來,以為清掉就沒有事了嗎?結果一樣,IE/Firefox一開,還是出現錯誤,導致關閉,至時Google的Chrome一點事情也沒有,真的不知道是該高興還是難過。高興的是,我至少還有一個Browser可以上網,難過的是,有一些Active X的環境要用IE。

Read more →

20090714地震

還沒有看到這次地震的深度與強度,直覺來說,這次地震還蠻大的,我家老老小小四個人全都醒了,可見這個地震的規模應該不小。

神奇的是,這時這刻,中央氣相局的網站異常的慢,是不是太多人進來查資料呢?應該沒有太多人知道地震要查中央氣相局吧!不過,真的很慢,如果真的有這麼多人進來查地震資料,我想對於地震,想要知道的人還不少。 對於國人知道地震要查中央氣相局,心裡還蠻高興的,不過,是不是搜尋引擎太強,我就不知道了。

資料出來了:

2009/07/14 02:16 宜蘭南澳地震站南方 20.2 公里 3.9
2009/07/14 02:05 花蓮秀林地震站東方 57.0 公里 6.3
2009/07/14 02:02 宜蘭南澳地震站南偏西方 18.9 公里 4.0

兩個地震隔不到3分鐘,而且震度都有瑞士規格4以上,不知道這樣算不是雙主震。另外,02:02這個規模4的地震,震源深度只有12.9公里,不知道算不算是淺源地震。02:05的地震,震央深度更淺了,只有9.4公里。台北、桃園、新竹、苗栗,震度2~3。 正在寫這篇的時候,又出現了新的地震,這算是正常的能量釋放嗎?從昨天到現在為止,總共出現了4個地震,而且都是在花東的外海。

02:02地震震度圖

02:05地震震度圖


最後的新聞說,這是兩次獨立的地震,彼此沒有關係,目前沒有任何傷亡傳出,不過,今天的內湖線會不會出問題啊!我還蠻擔心的。