RAD Studio 10.3 代號Rio,能開發在Windows、macOS、iOS、Android和Linux Server的應用程式。
在C++的部份,加上了C++ 17 Win32支持;Delphi 的話則加上了inline variable declaration, type inference。
大型網站架構..net 架構師.rabbitMQ.redis.行動開發.APP開發教學.PHP Laravel開發..net core C# 開發.架構師之路.Delphi開發.資料庫程式.進銷存.餐飲POS系統
RAD Studio 10.3 代號Rio,能開發在Windows、macOS、iOS、Android和Linux Server的應用程式。
在C++的部份,加上了C++ 17 Win32支持;Delphi 的話則加上了inline variable declaration, type inference。
台灣最近銀行與第三方支付、行動支付發展越來越快,而Delphi使用indy元件時,如果處理SSL網站時不是很容易。
後來找到了ipwork的元件還不錯用。
列一下關鍵的程式
ipwhttp1 := Tipwhttp.Create(Application); ipwhttp1.Config('CodePage=65001'); posturl:=posturl+'barcode='+sBarcode; ipwhttp1.Post(sPaymentURL+'?'+posturl); result:=UTF8ToString(ipwhttp1.TransferredData); ipwhttp1.free;
另外處理像SHA/AES等加解密也很方便
function GetTokenKey(s:String):String; var ipcHash1: TipcHash; begin ipcHash1 := TipcHash.Create(Application); ipcHash1.Reset(); ipcHash1.Algorithm := TipcHashAlgorithms(haSHA256); ipcHash1.InputMessage := s; ipcHash1.ComputeHash(); result :=lowercase(ipcHash1.HashValue); ipcHash1.Free; end;
LINE Developers目前主要提供的服務有LINE Login登入、Messaging API訊息以及Clova Skill數位語音助理的功能。目前最多人使用的應該是Messaging API開發LINE 機器人服務,而LINE Login則可以與Facebook Login一樣讓使用者便利登入。以下介紹如何開發LINE Login.
一、進入LINE Developers官方網站(https://developers.line.me/en/) ,然後新增一個channel(Create new channel)。
二、我們要開發的是LINE Login,所以點選LINE Login
三、依序填入資料後按confirm確認,最後打勾同意開發者條款後按create即可
四、成功建立後,就會出現一個新的channel
五、接著要把 Channel ID以及 Channel secret記下來
六、接著在第二頁的App settings中,輸入Callback URL後按Update。
七、接著可以開始寫程式了!我們會使用的主要三個API為
Ⅰ https://access.line.me/oauth2/v2.1/authorize (登入連結)
Ⅱ https://api.line.me/oauth2/v2.1/token (取得Access Token)
Ⅲ https://api.line.me/v2/profile (取得登入者資料)
素材:Login Button(https://developers.line.me/en/docs/line-login/login-button/)
流程大致如下:
最近釋出了RAD STUDIO 新的ROADMAP開發藍圖。最主要的大概是 Professional版本不用額外買mobile開發套件,然後多了一個可以給student且功能與Professional相近的Community版本。目前主要仍著重於 Mobile(Android/IOS)以及語法的增進。
參考資料:
https://community.embarcadero.com/blogs/entry/august-2018-roadmap-commentary-from-product-management
Delphi推出了全新的社群版本(Community Edition),不像先前的starter版本。而是專業版加上iOS/Android功能。如果寫開放源始碼/免費軟體都可以,商業版的話限制為
1年收入不超過5000美金(約15萬台幣)
2成員不超過5人
延伸閱讀:
最近常遇到需要使用AES加解密的需求,無論是網路傳輸/API相關的部份。
分享一下
Github原始碼下載
https://github.com/superlevin/CSharpAES
using System.Security.Cryptography;
public static string SHAEncrypt(string str)
{
var crypt = new System.Security.Cryptography.SHA256Managed();
var hash = new System.Text.StringBuilder();
byte[] crypto = crypt.ComputeHash(Encoding.UTF8.GetBytes(str));
foreach (byte theByte in crypto)
{
hash.Append(theByte.ToString("x2"));
// x小寫 X 大寫 x2 補0
}
return hash.ToString();
}
public static string AESEncrypt(string str, string strkey, string strivKey, bool isVasEncrypt = false)
{
var aesCipher = new AesManaged
{
KeySize = 128,
BlockSize = 128,
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
};
var keyStr = KeyGenerator(strkey);
var key = Convert.FromBase64String(keyStr);
var ivKey = Encoding.UTF8.GetBytes(strivKey);
var input = str;
var ivStr = Convert.ToBase64String(ivKey);
aesCipher.Key = key;
aesCipher.IV = ivKey;
byte[] b = System.Text.Encoding.UTF8.GetBytes(str); // plain text to be encrypted
ICryptoTransform encryptTransform = aesCipher.CreateEncryptor();
byte[] cipherText = encryptTransform.TransformFinalBlock(b, 0, b.Length);
return Convert.ToBase64String(cipherText);
}
public static string AESDecrypt(string encstring, string strkey, string strivKey)
{
var aesCipher = new AesManaged
{
KeySize = 128,
BlockSize = 128,
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
};
var keyStr = KeyGenerator(strkey);
var key = Convert.FromBase64String(keyStr);
aesCipher.Key = key;
aesCipher.IV = Encoding.UTF8.GetBytes(strivKey);
var encryptBytes = Convert.FromBase64String(encstring);
ICryptoTransform decryptTransform = aesCipher.CreateDecryptor();
byte[] plainText = decryptTransform.TransformFinalBlock(encryptBytes, 0, encryptBytes.Length);
return System.Text.Encoding.UTF8.GetString(plainText);
}
var
Chr : array [0..255] of char;
begin
// use Windows
LCMapString(
GetUserDefaultLCID(),
LCMAP_FULLWIDTH, // 轉換全型 LCMAP_HALFWIDTH 半型
PChar(Edit2.Text), // 傳入文字
Length(Edit2.Text) + 1,
chr, // 轉換後字串
Sizeof(chr) // 轉換後字串
);
Edit1.Text := Chr;
end;
今年3月份embarcadero發佈10.2.3升級後,卻發生一直無法正常解除10.2.2的問題,後來求助台灣QCom捷康的幫忙後也無法解決,台灣捷康幫忙與總部聯繫。在連假第三天終於解決了!感謝台灣捷康Eddie Chang以及embarcadero support。
相關資源:
https://community.embarcadero.com/
www.qcomgroup.com.tw
https://community.embarcadero.com/article/articles-support/174-rad-studio/installation-registration/16501-manual-uninstall-of-rad-studio-delphi-c-builder-10-2