Delphi XE5 Android Kitkat Style下載

Delphi XE5提供 Andoird 4.4 Kitkat的樣式下載,使用的方式也相當簡單

1)在畫面上放一個TStyleBook元件

2)將 AndroidLight.fsf 或 AndroidDark.fsf 載入到TStyleBook元件

3)在 form oncreate事件加上~

{$IFDEF ANDROID}

if TOSVersion.Check(4, 4) then StyleBook := StyleBook1;

{$ENDIF}

下載網址: embarcadero網站

Delphi使用記憶體模擬表格的kbmmemtable

雖然在Delphi有clientdataset可以使用,但美中不足的是必需在程式部署時附上midas.dll,或是在程式中uses MidasLib。最近看到國外在討論的kbmmemtable,由於在寫餐飲的POS功能所以也來測試一下。

因為kbmmemtable不需要BDE支援,所以不用特別去設定DatabaseName, TableName和TableType這些屬性。

建立欄位很簡單,

with kbmMemTable1.FieldDefs do
begin
Clear;
Add(‘t01’, ftInteger, 0, false);
end;

建立index也只需要

Add(‘Index01’, ‘value’, []);

接著就可以像一般的ttable一樣,append新增edit修改delete刪除等動作…..

然後呢也可以直接讓datasource指定它,讓kbmmemtable的值顯示在dbgird上面。

它支援loadfromdataset的功能,如果需要cache資料在程式裡不要連結資料庫時,就可以利用這個功能。另外也可以支援savetofile的功能,共有二種

1)二進位資料

SaveToBinaryFile

LoadFromBinaryFile

2)csv格式

SaveToFile

LoadFromFile

 

Delphi 1stClass實現單選、複選按鈕

看到別人寫單選複選按鈕很簡單,於是努力的研究到底是用了什麼元件。才發現是用Woll2Woll 的1stCalss元件做到,自己寫的要死要活,別人簡單就達成了!orz

實現的方式很簡單,只要使用 TfcButtonGroup這個元件即可。

設定.ClickStyle 的屬性 bcsRadioGroup(單選)bcsCheckList(複選)

POS系統設備 – 餐飲點餐卡/ 餐飲業問卷調查

在餐飲業用餐後,某些比較大型的連鎖餐飲體系都會附上一張滿意度問卷調查表,或是在一些比較沒有過多調味變化的餐飲店中,也會出現學生時代答案卡形式的點餐卡。

點餐卡雖然沒有太深厚的技術,不過對於店家來說卻是蠻便利的,只要將客戶畫記好的點餐卡放入OMR光學閱讀機中,就可以輸入到POS系統畫面中。節省許多點餐及詢問的時間~

關閉清粥小菜_點餐卡

關閉鹽酥雞_點餐卡

關閉餐飲業

延伸連結:
名科資訊有限公司 http://www.dartgoal.com.tw/

 

POS系統設備 – 取餐呼叫器

在客戶那邊看到了蠻特別的機器「取餐呼叫器」,透過簡單的發送器及接收器,可以免除要廣播、大聲叫號的問題。等於手上的號碼牌(取餐牌)是會自動提醒的。操作也很簡單,只要透過發送器按下號碼後送出,手上對應的接收器就會閃爍,可以用在需要叫號的各行各業,甚至用在目前正夯的健康照護產業也可以。

 

 

延伸連結:
漢偉科技有限公司 http://www.ehanway.com.tw/

 

PHP產生透明的png縮圖

二個重點函數
imagealphablending($thumb,false)
imagesavealpha($thumb,true);

[php]
function pngthumb($sourePic,$smallFileName,$width,$heigh){
$image=imagecreatefrompng($sourePic);//PNG
imagesavealpha($image,true);
$BigWidth=imagesx($image);
$BigHeigh=imagesy($image);
$thumb = imagecreatetruecolor($width,$heigh);
imagealphablending($thumb,false);
imagesavealpha($thumb,true);
if(imagecopyresampled($thumb,$image,0,0,0,0,$width,$heigh,$BigWidth,$BigHeigh)){
imagepng($thumb,$smallFileName);}
return $smallFileName;
}
[/php]

德錡Keypro Rockey4 ND 軟體保護鎖 Keypro測試

對於開發軟體的人來說,最怕的莫過於自己辛苦開發多時的軟體,上市之後馬上遭受破解、盜版。不僅對開發者來說是莫大損失,也會降低開發的意願,所以開發者便會以各種方式來保護軟體。

保護軟體目前的方式有軟體保護(註冊碼、試用期間….)或硬體保護二種方式。當然軟體的部份總是道高一尺、魔高一丈,網路上總有神人有辦法破解,比較保險的做法仍是以硬體保護為主。ROCKEY4ND軟體保護鎖剛好前陣子接到德錡實業的業務經理簡先生電話,寄來了一支測試的Rockey4軟體保護鎖,順便將測試的結果告訴大家。

目前Rockey4軟體保護鎖支援的系統有:

  • Dos
  • Win98
  • Win2000
  • Win NT
  • Win XP
  • Vista
  • Win 7 32/64(二種版本均支援)
  • Win8 32/64(二種版本均支援)
  • Linux

支援的程式語言則有:

  • ASM
  • ASP
  • BCB
  • Cobol
  • Delphi
  • Fortran
  • FoxPro
  • Java
  • JavaScript
  • LabView
  • Perl
  • PHP
  • PowerBuilder
  • Visual Basic
  • VBA
  • VC
  • VS.NET

這邊筆者就列出PHP跟Delphi的使用方式

PHP
在使用前需註冊 regsvr32 Rockey4NDCom.dll

[php]
// 使用COM調用Dll
$Rockey = new COM("Com.CRockey4ND") or die("<h3>無法初始化保護鎖元件</h3>");
$Rockey->p1 = new VARIANT(0xc44c, VT_UI2);
$Rockey->p2 = new VARIANT(0xc8f8, VT_UI2);
$Rockey->p3 = new VARIANT(0x0799, VT_UI2);
$Rockey->p4 = new VARIANT(0xc43b, VT_UI2);

// 開啟保護鎖
$result = $Rockey->RockeyCM(3);
if ($result==0) {
print "<h4>Success</h4>";
} else {
print "<h4>Failed, Error Code: $result</h4>";
exit();
}
// 讀出資料
$Rockey->buffer = new VARIANT($text, VT_BSTR);
$Rockey->p1 = new VARIANT(0, VT_UI4);
$Rockey->p2 = new VARIANT(500, VT_UI4);
$result = $Rockey->RockeyCM(7);
if ($result==0) {
print "<h4>Success, Result: ".$Rockey->buffer."</h4>";
} else {
print "<h4>Failed, Error Code: $result</h4>";
exit();
}
[/php]

Delphi
Delphi的方式則有二種:一種是以Dcu一種是載入Dll
Dcu(Delphi Compiled Unit)要先把Rockey4ND.dcu複製到開發的資料夾。
DLL則是要把Rockey4ND.dll複製到開發的資料夾。
DCU寫法
1.Use rockey4nd;
2.宣告
mBuf:array[0..100] of Byte;
mFun,mP1,mP2,mP3,mP4,rt:Word;
lP1,lP2:LongWord;
mHand:array[0..16] of Word;
mHardID:array[0..16] of LongWord;
rc:array[0..4] of Word;

[pascal]
R4ND_Init(); //初始化
mP1:=$c44c;
mP2:=$c8f8;
mP3:=$799;
mP4:=$c43b;
for i:=0 to 30 do
mBuf[i]:=0;
rt:=0;
// 尋找是否有插Keypro
mFun:=1;
rt:= Rockey(mFun,mHand[0],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,’cannot find ROCKEY1,error:%d ‘,[rt]);
List.Items.Add(str);
exit;
end;
List.Items.Add(‘find ROCKEY No.1’);
[/pascal]

DLL寫法

[pascal]
mBuf:array[0..100] of Byte;
mFun,mP1,mP2,mP3,mP4,rt:Word;
lP1,lP2:LongWord;
mHand:array[0..16] of Word;
mHardID:array[0..16] of LongWord;
rc:array[0..4] of Word;

function Rockey(fun:Word; var Handle:Word;
var lp1,lp2:LongWord;
var P1,P2,P3,P4:Word;
var buf:Byte):Word;
stdcall;external ‘Rockey4ND.dll’;
[/pascal]

 

[pascal]
mP1:=$c44c;
mP2:=$c8f8;
mP3:=$799;
mP4:=$c43b;
for i:=0 to 30 do
mBuf[i]:=0;
rt:=0;
mFun:=1;
rt:= Rockey(mFun,mHand[0],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,’not find ROCKEY1,error:%x ‘,[rt]);
List.Items.Add(str);
exit;
end;
List.Items.Add(‘Find the first ROCKEY’);
[/pascal]

在測試完之後,發現程式的撰寫並不複雜。可以杜絕盜版以及破解的風險,避免軟體從商用變成公用 🙂

在安全性上保護鎖上面分兩級 4 個密碼,每個密碼 16 位長,第一級是基本密碼,對加密鎖進行基本調用時用,第二級密碼是開發商專用密碼,作用是控制加密鎖的寫入和定義加密算法,它在最終用戶的軟體中是不應該也是不需要出現的,即使跟蹤也跟不到。而每個開發商的加密鎖密碼都是不同的,也不用擔心其他開發商可以破解。
價格的部份,一支的價格介於400-500上下(依數量而定),也算是還可以接受的價格。建議有需要的朋友可以參考囉 🙂

相關連結:

德錡實業有限公司(http://www.mtitw.com)

Feitian http://www.ftsafe.com/
業務 簡建昌 0988778171電話 02-27555955
地址 台北市復興南路二段180巷29號1樓德錡實業有限公司 業務經理 簡建昌