tag:blogger.com,1999:blog-22889231012795015932024-03-05T17:21:08.844+08:00賈氏柏的屋簷下這裡的東西很硬,就像我的頭腦一樣。常常轉不過來,常常延遲,偶爾當機。但是~很真實~jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.comBlogger263125tag:blogger.com,1999:blog-2288923101279501593.post-52037520011253400082024-01-11T10:25:00.002+08:002024-01-11T10:35:25.811+08:00當 Delphi 熱絡, 福利自然就來的快<p>當 Delphi 12 Athens 出來後、因該是... 2023/11 開始試用。期間發生不少安裝上的問題,個人幾乎都發生在 Font 下載段的問題。但整體開發工具是非常有吸引力的!</p><p>也是在資訊類新聞看到一個標題『C# 有望取代 Java』又再次引用到 TIOBE Index 指標,又好奇到新聞截圖的全貌是甚麼,是否有所...... </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijZywUIxHZArWGB1FP11HSwp_FX5axSUGGy_Orh__K_kpmAzE4OEzkLXv7_M5En-_6Xu-YefgcYj-v0I-PCAvTqb8aWinx_OGQt1GKobg7D99yIFmlKI-QAfn8XgRViCAosXAH8U0VVFBK2rgBDnZq1a8dhSpRQSAqOWVodAI8CoeAZ_0PcvFNtxwGxgrg/s694/2024-01-11_08-37-45.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="331" data-original-width="694" height="306" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijZywUIxHZArWGB1FP11HSwp_FX5axSUGGy_Orh__K_kpmAzE4OEzkLXv7_M5En-_6Xu-YefgcYj-v0I-PCAvTqb8aWinx_OGQt1GKobg7D99yIFmlKI-QAfn8XgRViCAosXAH8U0VVFBK2rgBDnZq1a8dhSpRQSAqOWVodAI8CoeAZ_0PcvFNtxwGxgrg/w640-h306/2024-01-11_08-37-45.png" width="640" /></a></div>使用 Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu 等流行搜尋引擎來計算評級。特別值得一提的是、<span style="background-color: #fcff01;">TIOBE Index 並不是指最好的程式語言或寫最多行的程式語言。</span><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0Gom0Y6s3clm_1NsFeKxvqFbXLTHO-66SQ7YRzduOgxhaIc5_UKYHeIomPy9mQm586zVlUm2p4pohU8fTNS_emxIWwrXMLYmW4762FOB47diOW9S-6v3Qf4MocCR1NZxK7-fR-Gy4BgNO0jMxlv-bVx5GdEqlgNkgOkam0PI2GOdfygrRX-Wga4PxUeDU/s1203/2024-01-11_08-47-26.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1203" data-original-width="694" height="1106" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0Gom0Y6s3clm_1NsFeKxvqFbXLTHO-66SQ7YRzduOgxhaIc5_UKYHeIomPy9mQm586zVlUm2p4pohU8fTNS_emxIWwrXMLYmW4762FOB47diOW9S-6v3Qf4MocCR1NZxK7-fR-Gy4BgNO0jMxlv-bVx5GdEqlgNkgOkam0PI2GOdfygrRX-Wga4PxUeDU/w638-h1106/2024-01-11_08-47-26.png" width="638" /></a></div><br /><div>大躍進的排名有 Scratch、Fortran、Delphi/Object Pascal、Kotlin、COBOL。</div><blockquote><div><span style="font-size: x-small;"><b>每次都想起一則笑話:推銷我們買 4GL 產品的 ERP 業務團隊,聽到我們還在使用 Delphi 這麼老的開發工具,當場就說了</b></span></div></blockquote><blockquote><p><span style="font-size: x-small;"><b>業務隊:你們 Delphi 用起來沒有問題嗎?聽說已經很古老又沒有維護了。你們都沒有遇到問題嗎?</b></span></p></blockquote><blockquote><div><span style="font-size: x-small;"><b>玩家隊:哈哈、還好、沒甚麼問題。</b></span></div></blockquote><blockquote><span style="font-size: x-small;"><b>業務隊:.A.b...1.3.x. </b></span></blockquote><blockquote><span style="font-size: x-small;"><b>玩家隊:我們回到你要介紹的系統吧。</b></span><p><span style="font-size: x-small;"><b>每每想到這個笑話,都讓我找不到 TIOBE Index 。</b></span> </p></blockquote><p>好吧,言歸。當一個工具越流行之後,最受矚目的地下工具就開始冒出來了。以往綠色版去那個少這個的,而具有讓工具完整可用的 Generator / Crack 還是不錯的選擇。重點:<span style="background-color: #fcff01;">請支持正版購買!</span></p><div style="text-align: center;"><a href="https://youtu.be/IOjwmz4RXjg?si=2RIqRUdsSpff0wy9" target="_blank">Delphi 12 Athens Install RAD Studio</a><br /><span style="color: white;">RADStudio-12-29-0-50491-5718-KeyPatch</span></div><div><br /></div><div>會幫助你完成任務的程式語言/開發工具、就是好的程式語言/開發工具。</div><div>還要加上一個體悟:會讓你用起來開心的完成任務,就是好的程式語言/開發工具。</div><div style="text-align: center;"><span style="font-size: x-small;">有少部分的人用起來就是為了、下班,很想問『你還好嗎!』</span></div><div><br /></div><div style="text-align: right;">[Delphi 12 <span style="text-align: left;">Athens</span>、我們開工吧!]</div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-63654762289210739972023-12-06T11:32:00.003+08:002023-12-21T16:15:56.405+08:00Delphi Count to 1 Billion<p>有時候是為了排解一下心情:</p><p><a href="https://www.facebook.com/groups/improgramer/posts/7146197865431341/?__cft__[0]=AZXF6_YuqGqVgFFEyuPSjNh_Bxu2qWimrapVOyva-zlUVxFLuRp1z1SPbgmCC9bpj8Bw4ISgK3OtQnB8O2xZ0st_GdUqRyDoAPvYbqaTH-jeLCJlcVyjOAsGRod-JMnKkQXlwnavMO_heyS0_UZrPiI-&__tn__=%2CO%2CP-R" target="_blank">I Am A Programmer & I've No Life... Count to 1 Billion</a> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1l5dGGoHk6BLRiKbQAnvkLhfSzFPc_GHYS-f9XCbdpLEouamDVoUFTmmyFan0SzucaaenE3Mg9z5Ex8xsQLbm1ZcqKXrew8i-oHM44thCB1ahmDQzew3SWWgdSKBmZ4m4FH6PgTuv4fQ0MySoFU_kwCrahkphVQQ-kv-25X_i1DwdbtigVEr7EgwJie_h/s680/2023-12-06_11-28-34.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="646" data-original-width="680" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1l5dGGoHk6BLRiKbQAnvkLhfSzFPc_GHYS-f9XCbdpLEouamDVoUFTmmyFan0SzucaaenE3Mg9z5Ex8xsQLbm1ZcqKXrew8i-oHM44thCB1ahmDQzew3SWWgdSKBmZ4m4FH6PgTuv4fQ0MySoFU_kwCrahkphVQQ-kv-25X_i1DwdbtigVEr7EgwJie_h/s320/2023-12-06_11-28-34.jpg" width="320" /></a></div><br /><p>其實結果也讓我嚇一跳:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLHFatfa_p-hXSTnYI3cywqGy4Pr2MVz420KQCHFEBIprHktFvDxyoq7Oa3_VYmTgtpXcW9kHkfbtfOuanT2hyphenhyphen7MSC-Zq9bokwTm2qloWqo8zcI-8VtWXNRo1lGpl9iqjQwEXwK2S7n6pYxQNVRIIuRsevLohqo0E_6KdFqXkaUv5OzjscY7XVatoXqENp/s579/2023-12-06_11-23-11.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="132" data-original-width="579" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLHFatfa_p-hXSTnYI3cywqGy4Pr2MVz420KQCHFEBIprHktFvDxyoq7Oa3_VYmTgtpXcW9kHkfbtfOuanT2hyphenhyphen7MSC-Zq9bokwTm2qloWqo8zcI-8VtWXNRo1lGpl9iqjQwEXwK2S7n6pYxQNVRIIuRsevLohqo0E_6KdFqXkaUv5OzjscY7XVatoXqENp/s16000/2023-12-06_11-23-11.jpg" /></a></div>Delphi 用了 0.2565s<div><br /></div><div>Google 真厲害,2022 有人做過了:<a href="https://youtu.be/VRj0zvIwrcU?si=CQ4iHwZTSgWAOTup" target="_blank">Count 1 Billion - Who's the fastest?</a></div><div>還好誤差值不高。他的是 0.2884s<br /><p style="text-align: right;">[Count to 1 Billion]</p></div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-31917141951927316822023-11-17T08:08:00.001+08:002023-11-17T08:08:10.739+08:00Transcend MTS430S 512GB 測試紀錄<p>Transcend 創見 512GB MTS430S M.2 2242 SATA Ⅲ SSD TS512GMTS430S</p><p>ORICO NGFF 外接盒 M.2 SATA M2PF-C3</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUILP4FxCMtREsem40U1AgakDE6dC8xI6UGGYHItoi-aGTHssvybSJqjMpYRrymywhZi9m8SyZO3I1JLkJt04RUcLgNPqX2ii9Z9AsJ2w-sQDJz5gKinQqVxINqKppCrlFGM6H0GG-jM87PUYVOsarpm74ioTpBrF9ZO5lZ5FJjm7oVhi7Fpqhyc1nsjbq/s480/2023-11-17_08-05-12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUILP4FxCMtREsem40U1AgakDE6dC8xI6UGGYHItoi-aGTHssvybSJqjMpYRrymywhZi9m8SyZO3I1JLkJt04RUcLgNPqX2ii9Z9AsJ2w-sQDJz5gKinQqVxINqKppCrlFGM6H0GG-jM87PUYVOsarpm74ioTpBrF9ZO5lZ5FJjm7oVhi7Fpqhyc1nsjbq/s16000/2023-11-17_08-05-12.jpg" /></a></div><br /><p><br /></p><h1 style="text-align: left;"><span style="font-family: courier; font-weight: normal;"><span style="font-size: x-small;">------------------------------------------------------------------------------<br /></span><span style="font-size: x-small;">CrystalDiskMark 8.0.4 x64 (C) 2007-2021 hiyohiyo<br /></span><span style="font-size: x-small;"> Crystal Dew World: https://crystalmark.info/<br /></span><span style="font-size: x-small;">------------------------------------------------------------------------------<br /></span><span style="font-size: x-small;">* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]<br /></span><span style="font-size: x-small;">* KB = 1000 bytes, KiB = 1024 bytes</span><span style="font-size: x-small;"><br /></span><span style="font-size: x-small;">[Read]<br /></span><span style="font-size: x-small;"> SEQ 1MiB (Q= 8, T= 1): 444.221 MB/s [ 423.6 IOPS] < 18821.07 us><br /></span><span style="font-size: x-small;"> SEQ 1MiB (Q= 1, T= 1): 418.561 MB/s [ 399.2 IOPS] < 2501.35 us><br /></span><span style="font-size: x-small;"> RND 4KiB (Q= 32, T= 1): 166.841 MB/s [ 40732.7 IOPS] < 777.47 us><br /></span><span style="font-size: x-small;"> RND 4KiB (Q= 1, T= 1): 25.075 MB/s [ 6121.8 IOPS] < 163.06 us></span><span style="font-size: x-small;"><br /></span><span style="font-size: x-small;">[Write]<br /></span><span style="font-size: x-small;"> SEQ 1MiB (Q= 8, T= 1): 455.247 MB/s [ 434.2 IOPS] < 18341.13 us><br /></span><span style="font-size: x-small;"> SEQ 1MiB (Q= 1, T= 1): 413.708 MB/s [ 394.5 IOPS] < 2532.45 us><br /></span><span style="font-size: x-small;"> RND 4KiB (Q= 32, T= 1): 160.949 MB/s [ 39294.2 IOPS] < 799.23 us><br /></span><span style="font-size: x-small;"> RND 4KiB (Q= 1, T= 1): 39.539 MB/s [ 9653.1 IOPS] < 103.22 us></span><span style="font-size: x-small;"><br /></span><span style="font-size: x-small;">Profile: Default<br /></span><span style="font-size: x-small;"> Test: 512 MiB (x3) [G: 0% (0/477GiB)]<br /></span><span style="font-size: x-small;"> Mode: [Admin]<br /></span><span style="font-size: x-small;"> Time: Measure 5 sec / Interval 5 sec <br /></span><span style="font-size: x-small;"> Date: 2023/11/17 8:02:51<br /></span><span style="font-size: x-small;"> OS: Windows 11 Professional [10.0 Build 22621] (x64)</span></span></h1><div style="text-align: right;">[TS512GMTS430S、<span style="text-align: left;">ORICO NGFF M2PF-C3</span>]</div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-71945728537631687722023-11-11T17:44:00.001+08:002023-11-11T17:44:08.638+08:00Delphi 字串分割 SplitString 完成你的工作了嗎?<p><span style="font-size: medium;">Delphi 在 XE 後提供一個快速的字串分割工具 SplitString 可以快速地將結構化字串分解出來。他的宣告如下:</span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7KjpwZ9AKn66VVKySUo7izA50JnWz01fj3jeZWHJyzuXJn7rUj_3sQcCY0Hj6L0ULW3ilKqzbjEPbVQ3xDFuw8LL_lifntYW_JfMKYaw-vr1ry2M2Ye46EQb2DNv1RZ8jSJtzyebqWMSjZ1hBwma0CVAmq3O_1-2uZwQmTSeovWi3CcwuwE2KeiGYN-JT/s707/2023-11-11_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="168" data-original-width="707" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7KjpwZ9AKn66VVKySUo7izA50JnWz01fj3jeZWHJyzuXJn7rUj_3sQcCY0Hj6L0ULW3ilKqzbjEPbVQ3xDFuw8LL_lifntYW_JfMKYaw-vr1ry2M2Ye46EQb2DNv1RZ8jSJtzyebqWMSjZ1hBwma0CVAmq3O_1-2uZwQmTSeovWi3CcwuwE2KeiGYN-JT/s16000/2023-11-11_01.jpg" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><span style="font-size: large;">注意 Delimiters 是 String,但不</span><span style="font-size: large;">像</span><span style="font-size: large;">想像中的 String。</span><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6eIk90pGd6t2zY5mdmQlZTpqP2eL1deUjBit5yVOuSIQ065xtM1RakZvbBbxCkVzcvFxK5pvRrx7tCAJGjNRLaHS2xrVTNCSdy55o8wn9nHOQZH2eRv8ZeugodGRaJK4CrhieshRsEQyws-BwSgZpfzQo6PUbqlRzdYHWFer9M4XQ0QDE5s2T-IG6RnRk/s864/2023-11-11_03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="106" data-original-width="864" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6eIk90pGd6t2zY5mdmQlZTpqP2eL1deUjBit5yVOuSIQ065xtM1RakZvbBbxCkVzcvFxK5pvRrx7tCAJGjNRLaHS2xrVTNCSdy55o8wn9nHOQZH2eRv8ZeugodGRaJK4CrhieshRsEQyws-BwSgZpfzQo6PUbqlRzdYHWFer9M4XQ0QDE5s2T-IG6RnRk/s16000/2023-11-11_03.jpg" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><span style="font-size: large;">在不同專案中會用到不同的分隔符號,一定都是鍵盤上的那幾個嗎?</span><p></p><p><span style="font-size: medium;">廢話不多說,來看一下個人常用的雙字元範例:</span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-5Ajv0yzYJClRAuko5ItEXRsegyhboG1dmSFok1_OL7APHgDykz-v2qfzOiP32s3QoGI1DSkylXWvz5XyRyS6IGCW3tNPWpam9AjhvaFgErmWbCybN4ZDzlUFG7gaiRTRxcM3PtMnmLMl2HZuikjVcbLmyvTTTlGFmstI8tn4FaxcfpSurHn1IlXdWQYz/s753/2023-11-11_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="112" data-original-width="753" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-5Ajv0yzYJClRAuko5ItEXRsegyhboG1dmSFok1_OL7APHgDykz-v2qfzOiP32s3QoGI1DSkylXWvz5XyRyS6IGCW3tNPWpam9AjhvaFgErmWbCybN4ZDzlUFG7gaiRTRxcM3PtMnmLMl2HZuikjVcbLmyvTTTlGFmstI8tn4FaxcfpSurHn1IlXdWQYz/s16000/2023-11-11_02.jpg" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><span style="font-size: large;">畫面是將滑鼠停留在變數 StringDynArray 上。注意到了嗎? SplitString 遇到第一個影子就開槍。怕忘記、記錄當下。</span><p></p><p style="text-align: right;">[Delphi SplitString done your job?]</p>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-75750190993474888412023-05-20T18:00:00.000+08:002023-05-20T18:00:02.736+08:00LogSeq 個人速記<p>在上一篇 [<a href="https://jasper-hsia.blogspot.com/2022/12/logseq.html" target="_blank">開源筆記軟體 Logseq</a>] 之後,真的越用越順手。其中三篇引用了 NTU 國立台灣大學技術論壇分享的文章,幾乎涵蓋了大部分的內容了。這裡只是怕失意下作為個人的速記。</p><h2 style="text-align: left;">字體凸顯</h2><p>隨然已經節錄文章中的精華,但難免在筆記中還是一段文章。如何在一段文字中讓關鍵字更醒目呢?新號的效果:斜體、粗體、斜粗體:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3nnIpCH7yQsEO4F2MemEBoMQD0GJQzZLpgSzq2hYD0AyrcFGrSTK6Z-DlPg5YzaNSexq2KIG_iBYb8q-UA_gAP6v-fkamSMDhYAmtp5Dv5qdg_-aPjWw9sSFU7eB5PLvevJzhUREP_JPOc0-K0wYmpqKtE9sKMA4KKvMPxSVjSJHQPQGgZxrozpYKCQ/s540/2023-05-20_17-24-25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="99" data-original-width="540" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3nnIpCH7yQsEO4F2MemEBoMQD0GJQzZLpgSzq2hYD0AyrcFGrSTK6Z-DlPg5YzaNSexq2KIG_iBYb8q-UA_gAP6v-fkamSMDhYAmtp5Dv5qdg_-aPjWw9sSFU7eB5PLvevJzhUREP_JPOc0-K0wYmpqKtE9sKMA4KKvMPxSVjSJHQPQGgZxrozpYKCQ/s16000/2023-05-20_17-24-25.png" /></a></div><br /><p>等號的效果:螢光筆</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiinooi4Q01XiypXmbyeWA7r7NlUX5-czxUaEOYc03hP7J0kYWzoY3wTv8GrSsmQTd-xmsrNQen8qe_FrhedhzToFbURAZaGG-C92JDnCp3yeaaf5Sp-B3l89ej_dYnq7CpNC4slwPdTQLHrIWuCE9jEvqbHgIr2jXiOwb8RL3XTRNVIPmZr9opArOj4g/s733/2023-05-20_17-54-05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="150" data-original-width="733" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiinooi4Q01XiypXmbyeWA7r7NlUX5-czxUaEOYc03hP7J0kYWzoY3wTv8GrSsmQTd-xmsrNQen8qe_FrhedhzToFbURAZaGG-C92JDnCp3yeaaf5Sp-B3l89ej_dYnq7CpNC4slwPdTQLHrIWuCE9jEvqbHgIr2jXiOwb8RL3XTRNVIPmZr9opArOj4g/s16000/2023-05-20_17-54-05.png" /></a></div><br /><p><br /></p><p><br /></p><p>甚麼?還有嗎?</p><p>在這 [<a href="https://jasper-hsia.blogspot.com/2022/12/logseq.html" target="_blank">開源筆記軟體 Logseq</a>] 篇中,引用了 NTU 國立台灣大學技術論壇分享的,幾乎涵蓋的內容還不夠嗎?</p><p><br /></p><p><br /></p><p style="text-align: right;">[<a href="https://logseq.com/" target="_blank">Logseq</a>]</p>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-45313752344374037432023-03-08T14:57:00.001+08:002023-05-31T11:01:14.662+08:00Nested-, 是巢狀式,不要在xd嵌套了<p>最近一年,Google 翻譯大量採用大數據用語,因而替換掉當地在地化的翻譯了。自己的文化還是屬於自己的嗎?</p><p>以前還記得 Nested 巢狀式結構,大量的資料與研究。現在都將被 Google 改成不屬於妳的文化,答案是對方用量比較大‧‧‧ 如果這樣,為什麼不馬來西亞化、星加坡化、、日本化、、、美國化?</p><p>Nested Dataset 是巢狀式資料集,不是嵌套數據集。[嵌套]是大陸用語,[數據集]是大陸用語。</p><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLgR9r46LDwjqdeCBSJCdtqx63hENggthhDiLWwL4spgUN8mgSoDOEe_3Z2vjlDri_3OAe8k8nJXHPxR3ZUa81kBZFXRIN2yMn8a1xpUxoNC7SUMOFQVqJSvBP0dBt7uJLEswvmZLhrDn0_7ymzyrJCIItUJGa_bfH32gteRHtVAhv4ZmEFV15KtuhhA/s748/2023-03-08_14-32-12.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="748" data-original-width="694" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLgR9r46LDwjqdeCBSJCdtqx63hENggthhDiLWwL4spgUN8mgSoDOEe_3Z2vjlDri_3OAe8k8nJXHPxR3ZUa81kBZFXRIN2yMn8a1xpUxoNC7SUMOFQVqJSvBP0dBt7uJLEswvmZLhrDn0_7ymzyrJCIItUJGa_bfH32gteRHtVAhv4ZmEFV15KtuhhA/w594-h640/2023-03-08_14-32-12.png" width="594" /></a></div><br /><p></p><p><a href="https://tw.ichacha.net/%E5%B5%8C%E5%85%A5%E5%BC%8F.html" target="_blank">https://tw.ichacha.net/嵌入式.html</a></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_WHWBvJ9eME_H9L2eNGL6A7aQ-kouWMc4yqglH0lY73dFFczu_ELJBsXJ83Dtl76LNDptskaO4GTb13NwBo7bhq984CWv2XPgXiWvO7-NMIdpfAXhetdtf5iE-RraUJZ4aOY0ahP7IQVvTL4Qm5gom5pMHqFAd-TUNvqTdDyFz3-Ixcg-Hvy5WBtphw/s706/2023-05-31_10-58-20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="96" data-original-width="706" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_WHWBvJ9eME_H9L2eNGL6A7aQ-kouWMc4yqglH0lY73dFFczu_ELJBsXJ83Dtl76LNDptskaO4GTb13NwBo7bhq984CWv2XPgXiWvO7-NMIdpfAXhetdtf5iE-RraUJZ4aOY0ahP7IQVvTL4Qm5gom5pMHqFAd-TUNvqTdDyFz3-Ixcg-Hvy5WBtphw/s16000/2023-05-31_10-58-20.png" /></a></div><br /><p><br /></p><p style="text-align: right;">[Nested 巢狀式結構]</p>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-23855125092603313782023-03-08T13:58:00.003+08:002023-03-08T13:58:37.172+08:00LocalSQL 錯將 REAL 資料型態轉換為 Integer<p>FireDAC 好用的 LocalSQL,可以在 Delphi 中 Run-Time 下對 ClientDataSet 內的做簡易的 SQL SELECT、INSERT、UPDATE、DELETE 語法。甚至於可以 JOIN 兩個不同來源的 ClientDataSet,相當奇妙的優秀。</p><p>今天遇到的難得的問題是浮點數 SUM(3.07) 沒有問題,而是 SUM(2.08) 得到整數的 3。想了很久,用 SQL Lite 的 CAST 語法修正:</p><p></p><blockquote>SUM(CAST(GWeight AS REAL)) AS GWeight</blockquote><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeHSwmjtWuq1uG1P4niWiohBEeRA1zYPKcEkmodvnrhj42xaZHcRZcgFZwEOfWnPtpQG7YlB-pf3NQbLfTxfk2jAppHBVO-jXfu2wEcZ7fDanUYTkfSMyR-2N4Ie1J2pDp9y1gz-yStOS09jo8l3Iwf5-c7CbKtVwm9S4GW-wqcZBcsSrLWrqJvNKWKg/s1107/2023-03-08_11-30-35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="368" data-original-width="1107" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeHSwmjtWuq1uG1P4niWiohBEeRA1zYPKcEkmodvnrhj42xaZHcRZcgFZwEOfWnPtpQG7YlB-pf3NQbLfTxfk2jAppHBVO-jXfu2wEcZ7fDanUYTkfSMyR-2N4Ie1J2pDp9y1gz-yStOS09jo8l3Iwf5-c7CbKtVwm9S4GW-wqcZBcsSrLWrqJvNKWKg/w640-h212/2023-03-08_11-30-35.png" width="640" /></a></div><br /><p></p><p style="text-align: right;">[FireDac's LocalSQL mistakenly translates the data type REAL into Integer.]</p>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-31206865263661656202023-03-06T11:52:00.006+08:002023-03-09T11:17:10.700+08:00Delphi 11.3 Setup<p>接續上一次的:<a href="https://jasper-hsia.blogspot.com/2023/03/delphi-113.html" target="_blank">Delphi 11.3 註冊超過限制</a>。接著記錄個人安裝的經過。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitDkRe8QmD-6oJmrrqbEV8RppDEDVajrIldt_B5Xx6yw57phBJnNLRsQ6T7Oeu_gMKfusf2H4BC0ITcpiBS7aIT_n4uAOelSRYgyTB6855NpqM7PRMx5IZS3D7TT12ezoz5kHrLHZG9SwMVDYrs0NGhWUoLWUsge-5-F5gj0VPFCD2e9-A1Fbs_KJLVA/s589/2023-03-03_08-33-44.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="349" data-original-width="589" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitDkRe8QmD-6oJmrrqbEV8RppDEDVajrIldt_B5Xx6yw57phBJnNLRsQ6T7Oeu_gMKfusf2H4BC0ITcpiBS7aIT_n4uAOelSRYgyTB6855NpqM7PRMx5IZS3D7TT12ezoz5kHrLHZG9SwMVDYrs0NGhWUoLWUsge-5-F5gj0VPFCD2e9-A1Fbs_KJLVA/w400-h238/2023-03-03_08-33-44.png" width="400" /></a></div><br /><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoWXeY1ULM7EkXzCbJWvBZEe0IRMZ9vDh1nFgcis9QEdohzKt-4uJpZehntXHfzk0LxZfwo8FtFo3S34hJ8u56ne0gGyV_HIFt7eaj3ikk_Y3YsDQobUPcL1WATYEHHvaDT1JGeif7iSMlwDuPfjX13vUzWoHVmafVDk9vh72kyY0RdcgsmINT1l-GcQ/s635/2023-03-03_08-35-35.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="473" data-original-width="635" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoWXeY1ULM7EkXzCbJWvBZEe0IRMZ9vDh1nFgcis9QEdohzKt-4uJpZehntXHfzk0LxZfwo8FtFo3S34hJ8u56ne0gGyV_HIFt7eaj3ikk_Y3YsDQobUPcL1WATYEHHvaDT1JGeif7iSMlwDuPfjX13vUzWoHVmafVDk9vh72kyY0RdcgsmINT1l-GcQ/w400-h297/2023-03-03_08-35-35.png" width="400" /></a></div><br /><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtDMqU5sTnVwka9ssENYSo9Ul0FUHsH8YBFZ93rwxHMjOxAJYkaTU5OJOC7YF9mOt5DsBq1HfWv2k4egmD4VZ_3SkKxC3RzrLl6YrO6sLnwpGNoLFmwMjGdB-iU-f401Pg2DVkhuKtLxu_1x1cOt8DmN1uTV4RxqmhvuTDt381MgWg6xVJ7M2_kzjJlA/s639/2023-03-03_08-36-22.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="578" data-original-width="639" height="361" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtDMqU5sTnVwka9ssENYSo9Ul0FUHsH8YBFZ93rwxHMjOxAJYkaTU5OJOC7YF9mOt5DsBq1HfWv2k4egmD4VZ_3SkKxC3RzrLl6YrO6sLnwpGNoLFmwMjGdB-iU-f401Pg2DVkhuKtLxu_1x1cOt8DmN1uTV4RxqmhvuTDt381MgWg6xVJ7M2_kzjJlA/w400-h361/2023-03-03_08-36-22.png" width="400" /></a></div><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLIupL9YvmlNVc4GhN8MO-NFS_q7iAj15rfi7Xc_bfbwaCzMT4ATXd2Is17K5EwLGteg0JwcpqNcziCAPAgNCKC8GEe2yPhht957jN3AMZ294aDxuXoGDRyrIuXCwguYPdaE_V_J5yz-t4SYNvlWXfgNz87UA6gagaNVspYUEUrWWEuOUNZ7LMJcskgA/s559/2023-03-03_08-36-43.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="475" data-original-width="559" height="340" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLIupL9YvmlNVc4GhN8MO-NFS_q7iAj15rfi7Xc_bfbwaCzMT4ATXd2Is17K5EwLGteg0JwcpqNcziCAPAgNCKC8GEe2yPhht957jN3AMZ294aDxuXoGDRyrIuXCwguYPdaE_V_J5yz-t4SYNvlWXfgNz87UA6gagaNVspYUEUrWWEuOUNZ7LMJcskgA/w400-h340/2023-03-03_08-36-43.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkglz6ZkH8LF5myq-Q8h3CrmDPGnlbEPUNxTQiZpr3qwkMm9Tw65wV_QZYtkOai9Q2moJJkb5xWx2hATNMZNvjWgN10OsrJ-0WL1NerEvxPlu9DnEOfW33OD_h6xnSWr8VrII3rxUewaXQJi5vc7oSujzy6D0rI5Gpx9zo4Vorp9VWEpc3dmc0QgTaWw/s638/2023-03-03_08-37-21.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="451" data-original-width="638" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkglz6ZkH8LF5myq-Q8h3CrmDPGnlbEPUNxTQiZpr3qwkMm9Tw65wV_QZYtkOai9Q2moJJkb5xWx2hATNMZNvjWgN10OsrJ-0WL1NerEvxPlu9DnEOfW33OD_h6xnSWr8VrII3rxUewaXQJi5vc7oSujzy6D0rI5Gpx9zo4Vorp9VWEpc3dmc0QgTaWw/w400-h283/2023-03-03_08-37-21.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqiOiFJE6kjGaUOaTgCXHR3RlIo8An_TJXzAzIhm55XS-I0sz5krVRdcpAKQlE_HnF6DKPUvrxfsrauCXPWV-fPjyMnOwf-XoRpczaUicUrHBuNM9dOt5HRO6OPfnG8sD9j0OAp34WkoM-YZQEo-BUJ8tuBPH2BvAx169s-613o7QF7wANNYtqtBR52A/s742/2023-03-03_08-51-41.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="447" data-original-width="742" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqiOiFJE6kjGaUOaTgCXHR3RlIo8An_TJXzAzIhm55XS-I0sz5krVRdcpAKQlE_HnF6DKPUvrxfsrauCXPWV-fPjyMnOwf-XoRpczaUicUrHBuNM9dOt5HRO6OPfnG8sD9j0OAp34WkoM-YZQEo-BUJ8tuBPH2BvAx169s-613o7QF7wANNYtqtBR52A/w400-h241/2023-03-03_08-51-41.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJymU6Qb-il7XfufvFFvmebzxv-B5hQLZFBeTncyw0PDDA_zhEeWAeWnrnO_791yUvi4lcjAxvUXc93XrynGMxLGyGr17iiGkIrdxDf-9bgdAeRtZHbZDorywio5LfwfRPhqetIuZBOXNkiYHXx1u0ypLs_MhiC_RSX9KFe9YC_kgiyv4nvNEA7dnyIw/s743/2023-03-03_08-52-52.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="546" data-original-width="743" height="294" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJymU6Qb-il7XfufvFFvmebzxv-B5hQLZFBeTncyw0PDDA_zhEeWAeWnrnO_791yUvi4lcjAxvUXc93XrynGMxLGyGr17iiGkIrdxDf-9bgdAeRtZHbZDorywio5LfwfRPhqetIuZBOXNkiYHXx1u0ypLs_MhiC_RSX9KFe9YC_kgiyv4nvNEA7dnyIw/w400-h294/2023-03-03_08-52-52.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaUHSzK7hyK1dC1jDYg0F36uHTwtoed99jdYV-khM-s5Zx76wpbTXL9W6CHo0tIHUF_3EIc8AI0Wdek6M-tX7gkykeDZwEb_mVV79HhTU1HFTVWvnfaAG2aEwnw6xbXNkStFXT9xfQ1f_HOM4PWMYU_KZCnRR8BbcJCLMIiAVeUBZHtEWAbWjE59Nq5g/s743/2023-03-03_08-53-22.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="545" data-original-width="743" height="294" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaUHSzK7hyK1dC1jDYg0F36uHTwtoed99jdYV-khM-s5Zx76wpbTXL9W6CHo0tIHUF_3EIc8AI0Wdek6M-tX7gkykeDZwEb_mVV79HhTU1HFTVWvnfaAG2aEwnw6xbXNkStFXT9xfQ1f_HOM4PWMYU_KZCnRR8BbcJCLMIiAVeUBZHtEWAbWjE59Nq5g/w400-h294/2023-03-03_08-53-22.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT4gB-1FKxokgM6Hv8wfFJQ8IYOWIwPu-gn8Ldvr7uYz3LTx8HlURlMk9Biyn93sDPsCdbabjnFRVxF_ttNNAydltPW0sfxCvsbJqhiF9feAxDrf5qREQdam34CzTnBTMMJgsrFJ5NJGMtFV5pfwsJw7k0lqXneXod3qEp4lLv9oszlEMzjpeyKUVyMg/s742/2023-03-03_09-03-01.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="245" data-original-width="742" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT4gB-1FKxokgM6Hv8wfFJQ8IYOWIwPu-gn8Ldvr7uYz3LTx8HlURlMk9Biyn93sDPsCdbabjnFRVxF_ttNNAydltPW0sfxCvsbJqhiF9feAxDrf5qREQdam34CzTnBTMMJgsrFJ5NJGMtFV5pfwsJw7k0lqXneXod3qEp4lLv9oszlEMzjpeyKUVyMg/w400-h133/2023-03-03_09-03-01.png" width="400" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeW3rT19oKqQcJdSJvq8RRmatp3ZiQkQrOOWuxj3C-XtjpQNEsqLr2b2rn_ssPCfgtx6FRNezjnZKMFIcvAUS2r6Kxmr_a4YkJz1m3CGE5DSwI6V8DUafQdn8pICmuj9PdO1DG4k9JP2W3Cn7yXeL9bClMfcBbg_9uPH5jVdSgZEd5pn21tgmAje6iIw/s638/2023-03-03_09-06-33.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="336" data-original-width="638" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeW3rT19oKqQcJdSJvq8RRmatp3ZiQkQrOOWuxj3C-XtjpQNEsqLr2b2rn_ssPCfgtx6FRNezjnZKMFIcvAUS2r6Kxmr_a4YkJz1m3CGE5DSwI6V8DUafQdn8pICmuj9PdO1DG4k9JP2W3Cn7yXeL9bClMfcBbg_9uPH5jVdSgZEd5pn21tgmAje6iIw/w400-h211/2023-03-03_09-06-33.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHQUhCN3AP0ejA0Dy-FBwn-skI2jy6CZmwy2lAzN9YdthjIX0fKarIXh05UBq5DWeMDC__exoDEc_K6zY2VW9iGFhRPXoS7ee8K0wwwP2HtVaGBI0dV_4V069NUTmgEXAwFLf-OIiYknZQdPGo1V2DyQQGN3-eBQEP7t3tGXEEScV1kvmXckpPjWrBPA/s868/2023-03-06_11-34-15.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="584" data-original-width="868" height="269" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHQUhCN3AP0ejA0Dy-FBwn-skI2jy6CZmwy2lAzN9YdthjIX0fKarIXh05UBq5DWeMDC__exoDEc_K6zY2VW9iGFhRPXoS7ee8K0wwwP2HtVaGBI0dV_4V069NUTmgEXAwFLf-OIiYknZQdPGo1V2DyQQGN3-eBQEP7t3tGXEEScV1kvmXckpPjWrBPA/w400-h269/2023-03-06_11-34-15.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl78AWfja1AhH9FcYGLnNBj6Gq_HTZ8yxDhMdt5iWfzJ-EBBBLUHVRqs5T9jEzLsZtnAO5JLi8MNY7u-Zz-VpvwZ7uUhB1FBkU2KLAWlf8MgI0idQSjZIXhlZT8u5fF0nPUeQJUcmB6zpZ8xId__0_X0CKoBmFWGX35oNRCH_aV0WXkTMUE_Z8yuneNw/s630/2023-03-06_11-37-53.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="399" data-original-width="630" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl78AWfja1AhH9FcYGLnNBj6Gq_HTZ8yxDhMdt5iWfzJ-EBBBLUHVRqs5T9jEzLsZtnAO5JLi8MNY7u-Zz-VpvwZ7uUhB1FBkU2KLAWlf8MgI0idQSjZIXhlZT8u5fF0nPUeQJUcmB6zpZ8xId__0_X0CKoBmFWGX35oNRCH_aV0WXkTMUE_Z8yuneNw/w400-h254/2023-03-06_11-37-53.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiliXvTuH2Vw2UdHl4QICPBFhsSFtWsCql281ioRdHWTkZBUp3d43WshyBZvKnmM8IYq-7kizr_v0kQZZIeTspkpuxt__OJfHB8bdcXxGGTzf1aXyfmPMBiJaqc0zMQmU-P_LppwU-LSmLoruXX24aAw7DWU556uRwMoS7mJf1n5TcgCQ3q4owR_BDLWw/s690/2023-03-06_11-43-48.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="528" data-original-width="690" height="306" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiliXvTuH2Vw2UdHl4QICPBFhsSFtWsCql281ioRdHWTkZBUp3d43WshyBZvKnmM8IYq-7kizr_v0kQZZIeTspkpuxt__OJfHB8bdcXxGGTzf1aXyfmPMBiJaqc0zMQmU-P_LppwU-LSmLoruXX24aAw7DWU556uRwMoS7mJf1n5TcgCQ3q4owR_BDLWw/w400-h306/2023-03-06_11-43-48.png" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://docwiki.embarcadero.com/RADStudio/Alexandria/en/11_Alexandria_-_Release_3" target="_blank">DocWiki Page - 11.3</a></div><div class="separator" style="clear: both; text-align: left;"><a href="https://docwiki.embarcadero.com/RADStudio/Alexandria/en/11_Alexandria_-_Release_2" target="_blank">DocWiki Page - 11.2</a></div><div class="separator" style="clear: both; text-align: left;"><a href="https://docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New_in_11.1.5" target="_blank">DocWiki Page - 11.1.5</a></div><div class="separator" style="clear: both; text-align: left;"><a href="https://docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New" target="_blank">DocWiki Page - 11</a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Installation_Notes" target="_blank">Installation Notes</a> - 這次沒有提到 Uninstall</div><div class="separator" style="clear: both; text-align: left;"><br /></div><blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;"><div class="separator" style="clear: both; text-align: left;"><a href="https://blogs.embarcadero.com/streamlining-rad-studio-upgrades-with-getit/" target="_blank">簡化 RAD Studio Upgrades - GetIt</a> - 這當中有提到:當火速升級新的 RAD Studio,所有安裝的軟件包都不會出現這些討厭的錯誤消息。一個順利的過程建議,在『Summary and Notes』。希望不會像以往升級安裝、一切忘光的現象。ps.我沒測。</div></blockquote><p> </p><div style="text-align: right;">[Delphi 11.3 Setup]</div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-39848895778222589472023-03-02T09:06:00.002+08:002023-03-06T10:37:28.117+08:00Delphi 11.3 註冊超過限制<p> 收到 RAD Studio 11.3 is now available for download 信件後過了一天!準備新環境來測試了。OS:為什麼要用新環境,遇過的人才知道。萬一移除測試,導致我的主力 Delphi 10 部分功能消失。這可一點都不好玩。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoisDt79gcsC4NHlPJY6L0rGYMDNXt_xGhaVG-g-hAx2k377g8rBnGL11toKD5IfWfI9cRNAvvetUrztPqUoSGmkqSeOBfwxcejsreqhZjaupmW0c1o4P3ck42ZJP2XK_4hUMqIt1-B7xfnz9FOY-NepJMnzdM9KjkuL2j8W-LfsT3kOpgwr9AHsFWjQ/s660/2023-03-02_08-36-30.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="360" data-original-width="660" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoisDt79gcsC4NHlPJY6L0rGYMDNXt_xGhaVG-g-hAx2k377g8rBnGL11toKD5IfWfI9cRNAvvetUrztPqUoSGmkqSeOBfwxcejsreqhZjaupmW0c1o4P3ck42ZJP2XK_4hUMqIt1-B7xfnz9FOY-NepJMnzdM9KjkuL2j8W-LfsT3kOpgwr9AHsFWjQ/s320/2023-03-02_08-36-30.png" width="320" /></a></div><div><br /></div>安裝中、就是註冊的動作與眾小小的不同。沒錯、我又紅字超標了。The registration limit for this serial number has been reached. For further assistance, please contact Support.<div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYaVsdNtMW9_bHtCNtJgtMSyTD8ato5dHRmcA-EDZDDy4yUEZMVFlWcnsKlN8SBvnkKNXvC8--_Bk3vrosE-mWdoQ8DYlk1QCsytg0QHRAM8QFncBwHgZjZFYSzjA1FZw_o-DKUx9CFj6R09MQCDmvisdNVfXu9NSgm48cyGj1GQNNLrGWW7In4n_arQ/s589/2023-03-02_07-51-30.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="442" data-original-width="589" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYaVsdNtMW9_bHtCNtJgtMSyTD8ato5dHRmcA-EDZDDy4yUEZMVFlWcnsKlN8SBvnkKNXvC8--_Bk3vrosE-mWdoQ8DYlk1QCsytg0QHRAM8QFncBwHgZjZFYSzjA1FZw_o-DKUx9CFj6R09MQCDmvisdNVfXu9NSgm48cyGj1GQNNLrGWW7In4n_arQ/w640-h480/2023-03-02_07-51-30.png" width="640" /></a></div><br /><p>點擊下方的 Trouble connecting:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAWCLPsp6yOG2tmhSELvMgsczbZdkO3QmJ4rcVql8ijWUArWp_rI-D8KiH4mR2RZf7K_GU9ychsv5f86AoOP-5J-lmpYAV_t6K7EQsCgbUvtI049HjJ9N_BpqxHfH4YxMM4ogTnuQiX-WQA6pYRuychuXFGOKWhn2YUBeoxrTZ0S0OP7-kDKuzyVAZUw/s825/2023-03-02_10-01-15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="704" data-original-width="825" height="546" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAWCLPsp6yOG2tmhSELvMgsczbZdkO3QmJ4rcVql8ijWUArWp_rI-D8KiH4mR2RZf7K_GU9ychsv5f86AoOP-5J-lmpYAV_t6K7EQsCgbUvtI049HjJ9N_BpqxHfH4YxMM4ogTnuQiX-WQA6pYRuychuXFGOKWhn2YUBeoxrTZ0S0OP7-kDKuzyVAZUw/w640-h546/2023-03-02_10-01-15.png" width="640" /></a></div><br /><p>其實會引導到 <a href="http://embarcadero.com/support">embarcadero.com/support</a>:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikwRFx2-Kna8ZbJzGqjhczDOGlGqUwHs0EfnXcHIq4FgjehekvevGAEctieN3OWI5XfuF6Tc5fCr8bFNEsykXjlr1BhfB7tpUVlp0S4B06Jpd7zlL7opc-c1tTi65h_i9Hcp4CpaliLxn5KQTZBgGnNrci5fF9RJL6TbAp_AC6OM5gioVPqOUa9DdJ1Q/s761/2023-03-02_08-11-50.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="644" data-original-width="761" height="542" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikwRFx2-Kna8ZbJzGqjhczDOGlGqUwHs0EfnXcHIq4FgjehekvevGAEctieN3OWI5XfuF6Tc5fCr8bFNEsykXjlr1BhfB7tpUVlp0S4B06Jpd7zlL7opc-c1tTi65h_i9Hcp4CpaliLxn5KQTZBgGnNrci5fF9RJL6TbAp_AC6OM5gioVPqOUa9DdJ1Q/w640-h542/2023-03-02_08-11-50.png" width="640" /></a></div><br /><p>輸入必要的資訊:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv7JvhPKoMCgDBrfURNIg9qbAlmEiUBCBN_hEulb5Dc_XD7HrQ6j5vZvYZmEInw1lSJ-MYmufBoP9DL3kXmwpdKMQoyoKwEQWry7wqJrH1mGy7-t1cIoNNdbEv3gpJGUymdGKAxPLVs0ubBAnidLqUaa9wb1L6ePP-CDFuDKILgvnFrbEHoJlcxjkxIA/s655/2023-03-02_08-01-11.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="467" data-original-width="655" height="456" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv7JvhPKoMCgDBrfURNIg9qbAlmEiUBCBN_hEulb5Dc_XD7HrQ6j5vZvYZmEInw1lSJ-MYmufBoP9DL3kXmwpdKMQoyoKwEQWry7wqJrH1mGy7-t1cIoNNdbEv3gpJGUymdGKAxPLVs0ubBAnidLqUaa9wb1L6ePP-CDFuDKILgvnFrbEHoJlcxjkxIA/w640-h456/2023-03-02_08-01-11.png" width="640" /></a></div><br /><p>終於出現回復了:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxQdyOV6MWFftm_bOd2K17bYSrHt6QhmZP38QKCJLnJevZoSowCGljj2i0yjIpmdCJHVROCCQ8dqN8SMQjZg4qAcXDGtKdtMDeMxOHWuKUIMfmb1gZGYyZZuglsWrA7LNhd_1GX703Ry2kEJLp7kr4Kkk0E4JS2mx-mu8sEPLfPcWGZB8poCEjJxUbQ/s878/2023-03-02_08-01-35.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="312" data-original-width="878" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxQdyOV6MWFftm_bOd2K17bYSrHt6QhmZP38QKCJLnJevZoSowCGljj2i0yjIpmdCJHVROCCQ8dqN8SMQjZg4qAcXDGtKdtMDeMxOHWuKUIMfmb1gZGYyZZuglsWrA7LNhd_1GX703Ry2kEJLp7kr4Kkk0E4JS2mx-mu8sEPLfPcWGZB8poCEjJxUbQ/w640-h228/2023-03-02_08-01-35.png" width="640" /></a></div><br /><p>以為就可以得到 reg4935_[temp number].txt、、、</p><p>One of our Customer Support Representatives will get back to you shortly. </p><p>不、還要再等一天、、、</p><p style="text-align: right;">[Delphi 11.3 Registration Limit Surprise]</p></div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-31715451397892423562023-02-18T18:01:00.004+08:002023-02-20T17:15:38.908+08:00現在還有多少開發者在乎效能-Qsirch?時時檢討自己寫的系統是否不當,但也不能表示甚麼,只能自我期許。<div>現在還有多少開發者在乎效能?<br />$(ProgramFiles(x86))\QNAP\Qsirch\opt\python-2.7.9.amd64\</div><div><br /></div><div>因該大家都知道 Python 好棒棒、Java 都很優秀。但對我來說..... 拜託,你們已經跑三天了。還要跑多久啊?</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioP4ggA7-clbGEs9Ox9ko_hewdLQi_fCqU9HwDxeVDKtjR6epW_XC6cc-eRZEGUlziAHTBtAi85hA4WSUbGlMvx3ujrKmkni563oVQVSAQqX7fuKmVaxGrKuwP-cKR2LOyXdhr6585JuiwTX5ZViKqXXB3XM1xFqWe-U18HoLpmQLALFP0h84gESLXjw/s616/2023-02-18_17-39-20.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="231" data-original-width="616" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioP4ggA7-clbGEs9Ox9ko_hewdLQi_fCqU9HwDxeVDKtjR6epW_XC6cc-eRZEGUlziAHTBtAi85hA4WSUbGlMvx3ujrKmkni563oVQVSAQqX7fuKmVaxGrKuwP-cKR2LOyXdhr6585JuiwTX5ZViKqXXB3XM1xFqWe-U18HoLpmQLALFP0h84gESLXjw/s16000/2023-02-18_17-39-20.png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhHVPVY13a_d2XnLZmWMXAylsB1hrJZtDZhqySXuLHHQ7GTU3_vqc_qWTGVhtdFD_SuKWwHgZd02doFhoOmbxfUbsTlRqnDUeQjCHFmU0NLNPH0k4scUH3KkU3tbO_oD6g2RGR6VG80i_YnQYV23ziSIkJ98H0R3Sj2rz0JTWI3KaWcIRSD3W_mmUzQQ/s439/2023-02-18_17-50-19.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="252" data-original-width="439" height="184" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhHVPVY13a_d2XnLZmWMXAylsB1hrJZtDZhqySXuLHHQ7GTU3_vqc_qWTGVhtdFD_SuKWwHgZd02doFhoOmbxfUbsTlRqnDUeQjCHFmU0NLNPH0k4scUH3KkU3tbO_oD6g2RGR6VG80i_YnQYV23ziSIkJ98H0R3Sj2rz0JTWI3KaWcIRSD3W_mmUzQQ/s320/2023-02-18_17-50-19.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">[<a href="https://ithelp.ithome.com.tw/articles/10183862" target="_blank">執行效能優化需要有的十個心態</a>]</div>https://ithelp.ithome.com.tw/articles/10183862<div><br /></div><div>02/20 抉擇。</div><div>這樣寫程式真的會死人,請看附圖:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe19NUdICD6f0bOiYSxesgnwZmEvRMQcw39vl7xmqiFvHaG-xdYvU8atwmHgQ_fPWowQ4q97K-C1eILP5F53KDdrBIAHsPdxcEg7LjMo5a7CEqO8l5gnfTEXQRYsSZqvTZzb5cSWkX_GTVQtOaoI_kBQMw6aLT-_BS3aCmRzVPuKg7GfV8WgKqzCSQsg/s380/2023-02-20_17-08-02.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="218" data-original-width="380" height="184" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe19NUdICD6f0bOiYSxesgnwZmEvRMQcw39vl7xmqiFvHaG-xdYvU8atwmHgQ_fPWowQ4q97K-C1eILP5F53KDdrBIAHsPdxcEg7LjMo5a7CEqO8l5gnfTEXQRYsSZqvTZzb5cSWkX_GTVQtOaoI_kBQMw6aLT-_BS3aCmRzVPuKg7GfV8WgKqzCSQsg/s320/2023-02-20_17-08-02.png" width="320" /></a></div><br /><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR92BPm8Tdz8qzFiU5cMQaTuOVW9kI_g51xkMGc9Rf2XKxlXMBCfJZlSW8-bn6-elN5TKnR9VH9OtWS0E9daW3FOF8osyAgt62gB2-c2f5-Dmh06P3ivwV0UDYNmoTogXjnvaJJVr684LPxDWPsSbhN2CjpWY-56Bu3eGqVHsI9tKaYeXuk5NIRwgeFA/s558/2023-02-20_07-55-07.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="211" data-original-width="558" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR92BPm8Tdz8qzFiU5cMQaTuOVW9kI_g51xkMGc9Rf2XKxlXMBCfJZlSW8-bn6-elN5TKnR9VH9OtWS0E9daW3FOF8osyAgt62gB2-c2f5-Dmh06P3ivwV0UDYNmoTogXjnvaJJVr684LPxDWPsSbhN2CjpWY-56Bu3eGqVHsI9tKaYeXuk5NIRwgeFA/s16000/2023-02-20_07-55-07.png" /></a></div>多說無益,參考就好。</div><div>決定移除 Qsirch 了!</div><div><div style="text-align: right;">[效能]</div></div><br />jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-91004437652481377552022-12-25T15:37:00.004+08:002023-01-10T09:22:26.908+08:00開源筆記軟體Logseq<p><span style="font-size: medium;">為什麼選擇開源筆記軟體 Logseq?起初一般的筆記本建檔的方式也就像資料夾與檔案的關係那樣一般。但很多記事其實不是這樣的規則,因該更像是...蜘蛛網狀式的方式、不是嗎?Google 了以後還真不止於此!進步到蜘蛛網狀式也還停留在二维空間,因該是像...大腦神經元一樣的多維度、是吧!?</span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://logseq.github.io/screenshots/1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="450" src="https://logseq.github.io/screenshots/1.png" width="800" /></a></div><br /><p><br /></p><p><span style="font-size: medium;">這樣的筆記軟體原來行之有年,<a href="https://obsidian.md/">Obsidian</a>、<a href="https://roamresearch.com/">Roam Research</a>、最後選擇了 <a href="https://logseq.com/">Logseq</a>。別說甚麼了,快自己來試試吧。</span></p><p><span style="background-color: white;"><a href="https://www.cc.ntu.edu.tw/chinese/epaper/home/20220620_006109.html" style="color: #004080; font-family: Arial, 微軟正黑體修正, 微軟正黑體, "Helvetica Neue", Helvetica, sans-serif, 新細明體; font-size: 22.4px; font-weight: 700;">開源筆記軟體Logseq【第一篇:簡介】</a><br /><span face="Arial, 微軟正黑體修正, 微軟正黑體, Helvetica Neue, Helvetica, sans-serif, 新細明體" style="color: #004080;"><span style="font-size: 22.4px;"><b>https://www.cc.ntu.edu.tw/chinese/epaper/home/20220620_006109.html</b></span></span></span></p><p><span style="background-color: white;"><a href="https://www.cc.ntu.edu.tw/chinese/epaper/home/20220920_006210.html" style="color: #004080; font-family: Arial, 微軟正黑體修正, 微軟正黑體, "Helvetica Neue", Helvetica, sans-serif, 新細明體; font-size: 22.4px; font-weight: 700;">開源筆記軟體Logseq【第二篇:介面及語法】</a><br /><span face="Arial, 微軟正黑體修正, 微軟正黑體, Helvetica Neue, Helvetica, sans-serif, 新細明體" style="color: #004080;"><span style="font-size: 22.4px;"><b>https://www.cc.ntu.edu.tw/chinese/epaper/home/20220920_006210.html</b></span></span></span></p><p><span style="background-color: white;"><a href="https://www.cc.ntu.edu.tw/chinese/epaper/home/20221220_006309.html" style="color: #004080; font-family: Arial, 微軟正黑體修正, 微軟正黑體, "Helvetica Neue", Helvetica, sans-serif, 新細明體; font-size: 22.4px; font-weight: 700;">開源筆記軟體Logseq【第三篇-進階語法功能】</a><br /><span face="Arial, 微軟正黑體修正, 微軟正黑體, Helvetica Neue, Helvetica, sans-serif, 新細明體" style="color: #004080;"><span style="font-size: 22.4px;"><b>https://www.cc.ntu.edu.tw/chinese/epaper/home/20221220_006309.html<br /><br /></b></span></span></span></p><p style="text-align: left;"></p><ul style="text-align: left;"><li><span style="font-size: medium;"><span style="background-color: white;">設定檔 .</span>\logseq\config.edn</span></li></ul><span style="font-size: medium;">在 journals 段落最尾部、補上設定↓。在點擊左側功能:Logseq\重新建立索引。<br /></span><span style="font-size: medium;"> {:journals<br /> .....<br /><div> :file/name-format :triple-lowbar</div><div> :journal/page-title-format "yyyy/MM/dd"</div><div> }</div><div><br /></div></span><p></p><p style="text-align: right;"><span style="background-color: white;"><span style="color: #004080; font-family: inherit;">[Logseq]</span></span></p>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-19542539786353475812022-07-21T16:20:00.000+08:002022-07-21T16:20:07.913+08:00Delphi how about using BPL at Runtime<p>有人寫好了,就方便多了。</p><p><a href="https://stackoverflow.com/questions/19492260/list-of-loaded-bpl-plugins-pretends-empty-despite-the-package-been-actually-loa" target="_blank">List of loaded BPL plugins pretends empty, despite the package been actually loadeed</a></p><p style="text-align: right;">[Delphi how about using BPL at Runtime]</p>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-31027688395812656462022-07-21T11:24:00.000+08:002022-07-21T11:24:25.031+08:00Invalid character value for cast specification<p>Delphi 出現錯誤訊息:Invalid character value for cast specification;改變類型規格中的字元值無效。</p><p>在中間層 (Middle-Tier) 使用 MS OLE DB Provider for SQL Server (SQLOLEDB) 執行所出現的錯誤訊息是『改變類型規格中的字元值無效』。使用 MS OLE DB Driver for SQL Server (MSOLEDBSQL) 執行所出現的錯誤訊息是『Invalid character value for cast specification』。這些是在中間層下達指令就被 OLE DB 中斷,所以在 SQL Server Profiler 不會出現。</p><p>當 DataSet To Json 的時候,將 ftGUID 格式的資料轉換到 String 這段是沒有問題。</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7tzRrDbDiKJ_CjsQtGIW_ikvFIlk19exCMibnJq_rY_ZiSKGFCWB8re16VsvucC4BOeNY9WzXeKpv0ViUEgyNnW04liU9fWhhlnFEAyQct0B0YpmBrdcElEp9PVxxnV3f5ZiVDoFNAY7nuQniZ4e3c68G91alPRiL7vW9xMY0kG56L6XFl7Pvk8PH0w/s787/2022-07-21_10-01-01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="189" data-original-width="787" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7tzRrDbDiKJ_CjsQtGIW_ikvFIlk19exCMibnJq_rY_ZiSKGFCWB8re16VsvucC4BOeNY9WzXeKpv0ViUEgyNnW04liU9fWhhlnFEAyQct0B0YpmBrdcElEp9PVxxnV3f5ZiVDoFNAY7nuQniZ4e3c68G91alPRiL7vW9xMY0kG56L6XFl7Pvk8PH0w/w640-h154/2022-07-21_10-01-01.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><p></p><p>當 Json To DataSet 的時候,將 ftGUID 欄位以 AsVariant 的方式接收 String 的資料,在用戶層 (Client-Tier) 來回交叉作業、也是沒問題的。但就是在最後由中間層寫回資料層 (DB-Tier) 出現上述難找的錯誤。</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhovzvQWiR81yXLpxKQ5kO1gc4t4vy5mhAyLJPFaLXFGKdYFpCu9l-YQC3VLjFMC2yVxRIvAMptRwfKBWIwOv-JqQslD8Zii3mNJ-tv9E0Kj-2QxXfId202av5-PB39baHpOiLoAOIF5aI19wgba-_rWY883ov0esrv9upZM7r78b0DswYGuEScksGypQ/s787/2022-07-21_10-06-55.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="139" data-original-width="787" height="114" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhovzvQWiR81yXLpxKQ5kO1gc4t4vy5mhAyLJPFaLXFGKdYFpCu9l-YQC3VLjFMC2yVxRIvAMptRwfKBWIwOv-JqQslD8Zii3mNJ-tv9E0Kj-2QxXfId202av5-PB39baHpOiLoAOIF5aI19wgba-_rWY883ov0esrv9upZM7r78b0DswYGuEScksGypQ/w640-h114/2022-07-21_10-06-55.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><p>修正一段 Json To DataSet 程式碼來還原原本的處理方式。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJmfsVjparoPyRk5L_kYnxqb6tDDTe3QDBsupYmII_5nPfSfsrSBX-mjncMixMADrWoUR6MBIkaHQ4SeSZdO1TXiM_XuWb-b464iVcp7bKSuHcIoXLsvyVNAtQ6PG9Ey3SD-GeP9jSn2fk3jw0swp84VfWHjIML-iSSvPZ5O2q3PiAHeFef9Ss_Povtg/s787/2022-07-21_11-14-55.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="267" data-original-width="787" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJmfsVjparoPyRk5L_kYnxqb6tDDTe3QDBsupYmII_5nPfSfsrSBX-mjncMixMADrWoUR6MBIkaHQ4SeSZdO1TXiM_XuWb-b464iVcp7bKSuHcIoXLsvyVNAtQ6PG9Ey3SD-GeP9jSn2fk3jw0swp84VfWHjIML-iSSvPZ5O2q3PiAHeFef9Ss_Povtg/w640-h218/2022-07-21_11-14-55.png" width="640" /></a></div><br /><p>在寫入資料層之前擷取中繼資料 (Metadata) 比對找出原因!</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHN5Opb7nu3_0oYefkJwvgqSFXFk193ZUm2HL_303S0FtcVVGF2Zr_H6Gm7W1vc7Eg6e2WVdkKA5FBaoTTHggA6i8kafw3E0xPrMzLim_8YBjSsbuKdB0ifZJMjjHSMk7ABl3edUD8pZ9_a2FOVlxUHeyAWzsTMDNjrK2y9qMsA2HTKvA_1ogQy6wZ8Q/s843/2022-07-21_10-55-20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="367" data-original-width="843" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHN5Opb7nu3_0oYefkJwvgqSFXFk193ZUm2HL_303S0FtcVVGF2Zr_H6Gm7W1vc7Eg6e2WVdkKA5FBaoTTHggA6i8kafw3E0xPrMzLim_8YBjSsbuKdB0ifZJMjjHSMk7ABl3edUD8pZ9_a2FOVlxUHeyAWzsTMDNjrK2y9qMsA2HTKvA_1ogQy6wZ8Q/w640-h278/2022-07-21_10-55-20.png" width="640" /></a></div><p> xF190、xF191 都是 ftGUID 欄。ftGUID 欄位以 AsVariant 接收空字元,會保留空字元。而 ftGUID 欄位以 AsString 接收之前的比對避開了 Null (無)。</p><p><br /></p><p>講白了,我沒有做好 Null 的處理!</p><div style="text-align: right;">[<span style="text-align: left;">Invalid character value for cast specification</span>]</div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-66265760294945583962022-02-09T14:14:00.001+08:002022-02-09T14:14:17.366+08:00REST Client 使用 SSL<p><br /></p><h1 style="text-align: left;">啟動有 SSL 的 REST Server </h1><p>為了開始 REST Client 專案順利,接下來啟動上一節的『<a href="https://jasper-hsia.blogspot.com/2022/02/datasnap-server-ssl.html" target="_blank">DataSnap Server 使用 SSL</a>』 。</p><h1 style="text-align: left;">FireDac</h1><p>Embarcadero 或是網路上一直強調 FireDac,那就來用 FireDac 來連結 REST SSL Server 看看。</p><h3 style="text-align: left;">新增 FireDac 設定</h3><p>在專案視窗的右側第三頁籤『Data Explorer』只展開 FireDac \ DataSnap Server。在 DataSnap Server 點右鍵 Add New Connection,輸入名稱:DSSvrSSL</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh_En88-OUrF5YDsfMU4JU3Sa71UwVrZvQ1bo1nxeHy1A5oP5L9IYjIVrRvbB4qOhQlJccyY4Ewfc_2wGtUFwnT0ZvH3h9G7cpb86lbGOO_tQ9Ghm8xBDems7V49Z6xpCtbPjBrMgpYJJpZ4i-CUF-yyX3jmR53LLvyGiJBTA6J3nFkAn0aqqKH2ZMrVg=s381" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="142" data-original-width="381" height="149" src="https://blogger.googleusercontent.com/img/a/AVvXsEh_En88-OUrF5YDsfMU4JU3Sa71UwVrZvQ1bo1nxeHy1A5oP5L9IYjIVrRvbB4qOhQlJccyY4Ewfc_2wGtUFwnT0ZvH3h9G7cpb86lbGOO_tQ9Ghm8xBDems7V49Z6xpCtbPjBrMgpYJJpZ4i-CUF-yyX3jmR53LLvyGiJBTA6J3nFkAn0aqqKH2ZMrVg=w400-h149" width="400" /></a></div><br /><p>FireDac Connection Editor 中變更參數: Protocol:https,Port:8080,點 Test 測試成功。</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjFuR89RPxSl0t11lCtGQ44o_pMRc-K5Pmi0Zpg1ld3xBxVVbCvRXFxSixGdojy9qqxAR2_k35imNTf2IEUWss87NHbyCpVvXF2hpbuHMQR4PT4RmWk6tSssWCoyg1ZTHQqzpxN2xadT1SQMXq7E52e6mFL1qNSB61cs1IM5BhONnC0Eh9BfTekEoF05w=s530" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="457" data-original-width="530" height="345" src="https://blogger.googleusercontent.com/img/a/AVvXsEjFuR89RPxSl0t11lCtGQ44o_pMRc-K5Pmi0Zpg1ld3xBxVVbCvRXFxSixGdojy9qqxAR2_k35imNTf2IEUWss87NHbyCpVvXF2hpbuHMQR4PT4RmWk6tSssWCoyg1ZTHQqzpxN2xadT1SQMXq7E52e6mFL1qNSB61cs1IM5BhONnC0Eh9BfTekEoF05w=w400-h345" width="400" /></a></div><br /><p></p><h3 style="text-align: left;">使用 FireDac</h3><p>新增專案 RESTCltSSL,步驟略過。拖曳 『Data Explorer』... \ DSSvrSSL \ Procedures \ TServerMethods1.EchoString 到主畫面上。還有 ReverseString!</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhNXxVuWlY-tUML661RhnCgBwvEi7Ys0mvYEnYclQaqXWaFS9sSBq26HoLN5WIaufDgVvEMIhRfo3BzF-yTV9QZuYSgT6GxBuZonYiByL1S27LIINh8UG7IBl3UbOOEHo4q9iFCYnq64sp6de2-TeRopVqN_hyxmvpS0lnPjpLQY7nIDIHiUKPLXxR-9g=s870" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="298" data-original-width="870" height="138" src="https://blogger.googleusercontent.com/img/a/AVvXsEhNXxVuWlY-tUML661RhnCgBwvEi7Ys0mvYEnYclQaqXWaFS9sSBq26HoLN5WIaufDgVvEMIhRfo3BzF-yTV9QZuYSgT6GxBuZonYiByL1S27LIINh8UG7IBl3UbOOEHo4q9iFCYnq64sp6de2-TeRopVqN_hyxmvpS0lnPjpLQY7nIDIHiUKPLXxR-9g=w400-h138" width="400" /></a></div><br /><p>做出以下畫面:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgsshZ1mxGdUREX0Ox5P5tGK0_y6sVkDcz0KnI8UUX4EeC0zqkAHPqJcm56Rh8Uzb6eYGklqeUgTye87Dfengn1PmBVtxul0S0F1d50hcPpS5gWuJyKT2HpzZHtPV5EWV5unekhEaMTKIKsgpauHfamxFjspW9ssZVLU-D3t5DikMyB4YBh2zc8fAJ3Ww=s674" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="309" data-original-width="674" height="184" src="https://blogger.googleusercontent.com/img/a/AVvXsEgsshZ1mxGdUREX0Ox5P5tGK0_y6sVkDcz0KnI8UUX4EeC0zqkAHPqJcm56Rh8Uzb6eYGklqeUgTye87Dfengn1PmBVtxul0S0F1d50hcPpS5gWuJyKT2HpzZHtPV5EWV5unekhEaMTKIKsgpauHfamxFjspW9ssZVLU-D3t5DikMyB4YBh2zc8fAJ3Ww=w400-h184" width="400" /></a></div><p></p><p>兩個 FireDac 的 Button 分別如下:</p><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">procedure</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">TfrmMain</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">btnFDEchoStrClick</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Sender</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">TObject</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">);</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">begin</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">EchostringProc</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ParamByName</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">'Value'</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">).</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">AsString</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:=</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Edit1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Text</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">EchostringProc</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ExecProc</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Memo1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Lines</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Append</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">EchostringProc</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ParamByName</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">'ReturnValue'</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">).</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">AsString</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">);</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">end</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">procedure</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">TfrmMain</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">btnFDReverseStrClick</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Sender</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">TObject</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">);</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">begin</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ReversestringProc</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ParamByName</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">'Value'</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">).</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">AsString</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:=</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Edit1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Text</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ReversestringProc</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ExecProc</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Memo1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Lines</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Append</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ReversestringProc</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ParamByName</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">'ReturnValue'</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">).</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">AsString</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">);</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">end</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span></div><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p>第一次執行測試,就出現錯誤:</p><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">---------------------------</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Restcltssl</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">---------------------------</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Protocol</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">https</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">can</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">be</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">used</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">after</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">an</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">adequate</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">instance</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">of</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">TDBXCommunicationLayer</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">is</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">registered</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">with</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">TDBXCommunicationLayerFactory</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">---------------------------</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span></div><p><br /></p><p><br /></p><p><br /></p><p>上述缺少的實作物件在 Data.DbxHTTPLayer,請在 uses 新增上去。</p><p>第二次執行測試:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh40jd9Atkodzq_E58LXApti4P96iig0iIxYGO3LoRF0nCY8nDYDwfJ0sQ2bx-TIInedQbSAYGsh_mftsNyVv4UHdjcruUyCPKDKjAV3bwRJj8YEQV3tM0xCv5DcrEMi-pB-nFiGlllApgNJmwyPUpzFPGzZ9v_3Tpn498Yy5UBnGX8-xA7IwdhAuAW-Q=s637" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="166" data-original-width="637" height="104" src="https://blogger.googleusercontent.com/img/a/AVvXsEh40jd9Atkodzq_E58LXApti4P96iig0iIxYGO3LoRF0nCY8nDYDwfJ0sQ2bx-TIInedQbSAYGsh_mftsNyVv4UHdjcruUyCPKDKjAV3bwRJj8YEQV3tM0xCv5DcrEMi-pB-nFiGlllApgNJmwyPUpzFPGzZ9v_3Tpn498Yy5UBnGX8-xA7IwdhAuAW-Q=w400-h104" width="400" /></a></div><p></p><h1 style="text-align: left;">REST</h1><p>除了透過 FireDac 連線成功以外,那就來測試一下傳統的 REST 功能如何連接使用。</p><p>在主畫面上新增三個元件:RESTClient、RESTRequest、RESTResponse。RESTCient1.BaseURL := https://localhost:8080/datasnap/rest/TServerMethods1/EchoString。RESTRequest1.Client 已經自動連到 RESTCient1。RESTRequest1.Response 也自動連到 RESTResponse1。</p><p>在 RESTRequest1.Resource 隨意填入第一個參數 Res1Res2。對 RESTRequest1 點右鍵 Execute ...</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgbKIpBTqi-ciNuosahH0s6rtLHTlsWG0nvMj2Uc7NjiMEBUT_nvyTVxAsuGWj3WNT27Kqj-jXzEmD_uOuqiY2l7BL8bzcrOrEzvDAF6c9Gziq22n3Azv2tqittsLh2Pl3wcUK5OhUzLnAw4nCEFBqJL3rY5Ya5UdGh3j5jKpym4cFJhpxttRZFSa4nlA=s558" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="261" data-original-width="558" height="188" src="https://blogger.googleusercontent.com/img/a/AVvXsEgbKIpBTqi-ciNuosahH0s6rtLHTlsWG0nvMj2Uc7NjiMEBUT_nvyTVxAsuGWj3WNT27Kqj-jXzEmD_uOuqiY2l7BL8bzcrOrEzvDAF6c9Gziq22n3Azv2tqittsLh2Pl3wcUK5OhUzLnAw4nCEFBqJL3rY5Ya5UdGh3j5jKpym4cFJhpxttRZFSa4nlA=w400-h188" width="400" /></a></div><p></p><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">---------------------------</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">RESTCltSSL</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">-</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Delphi</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc7" style="color: #ff8000; font-family: "Courier New"; font-size: 10pt;">10.3</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">-</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">frm_Main</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">[</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Built</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">]</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">---------------------------</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Response</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc7" style="color: #ff8000; font-family: "Courier New"; font-size: 10pt;">200</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">-</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">OK</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">---------------------------</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span></div><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;"><br /></span></div><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;"><br /></span></div><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;"><br /></span></div><p><br /></p><p><br /></p><p><br /></p><p>RESTRequest1.Content 點開視窗,可以得到回傳的 JSON 內容。所有 DataSnap Server 回傳的都是以 result 的 JSON 開頭物件。所以把 RESTRequest1.RootElement := result:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgXqjqdPUC2w5Nt2Q3WCDz1ySc7hX3pY8_3jt_uyCmcJZybE_lJeM6nzB6Hw0R3xTHZuO5fOcJl_J3xlUnGhdD-VgjXOSGy4_dKDXrIWXLQrYdl_x7p3dyMI2-HlPLkrNHT_rn278LXD7JLl8Bh8IKjD8208SMpuCtSgBcBuVBKPCNmwEBKYpnx3TtLLA=s731" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="296" data-original-width="731" height="163" src="https://blogger.googleusercontent.com/img/a/AVvXsEgXqjqdPUC2w5Nt2Q3WCDz1ySc7hX3pY8_3jt_uyCmcJZybE_lJeM6nzB6Hw0R3xTHZuO5fOcJl_J3xlUnGhdD-VgjXOSGy4_dKDXrIWXLQrYdl_x7p3dyMI2-HlPLkrNHT_rn278LXD7JLl8Bh8IKjD8208SMpuCtSgBcBuVBKPCNmwEBKYpnx3TtLLA=w400-h163" width="400" /></a></div><p></p><p>複製上述三個物件,貼上一次。會出現:RESTClient2、RESTRequest2、RESTResponse2。變更 RESTCient2.BaseURL := https://localhost:8080/datasnap/rest/TServerMethods1/ReverseString。再新增兩的 REST 使用的 Button。做出以下畫面:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiTgI4BDGRM83NeUs85dQCp9ydTuRfyKpTfF0z5hH_V9qGxoffjcLw8JDN_JyqSgqchM3CtKyvqnDvNYMxkuo1jSS9B_HwzVuxy37sjqMnqX8JhH8C7G4Rdd0ggrTA9NHcw2BLroJbguwPBOwxH__UVpTJh120MaNVKeETFd6PRSkbiSBueqFcpk8Zqgg=s673" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="295" data-original-width="673" height="175" src="https://blogger.googleusercontent.com/img/a/AVvXsEiTgI4BDGRM83NeUs85dQCp9ydTuRfyKpTfF0z5hH_V9qGxoffjcLw8JDN_JyqSgqchM3CtKyvqnDvNYMxkuo1jSS9B_HwzVuxy37sjqMnqX8JhH8C7G4Rdd0ggrTA9NHcw2BLroJbguwPBOwxH__UVpTJh120MaNVKeETFd6PRSkbiSBueqFcpk8Zqgg=w400-h175" width="400" /></a></div><br /><p></p><p>兩個 REST 的 Button 如下,請自行修改差異字:</p><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">procedure</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">TfrmMain</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">btnRestEchoStrClick</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Sender</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">TObject</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">);</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">var</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">jValue</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">TJSONValue</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">begin</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">RESTRequest1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Resource</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:=</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Edit1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Text</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">RESTRequest1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Execute</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Memo1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Lines</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Append</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">'Echo Response: '</span><span class="sc12" style="color: grey; font-family: "Courier New"; font-size: 10pt;">#13#10</span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">' '</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">+</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">RESTResponse1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Content</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">);</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">jValue</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:=</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">RESTResponse1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">JSONValue</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Memo1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Lines</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Append</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">'Echo Result: '</span><span class="sc12" style="color: grey; font-family: "Courier New"; font-size: 10pt;">#13#10</span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">' '</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">+</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">StringReplace</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">(</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">jValue</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">A</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">[</span><span class="sc7" style="color: #ff8000; font-family: "Courier New"; font-size: 10pt;">0</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">].</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">ToString</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">,</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">'"'</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">,</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc10" style="color: grey; font-family: "Courier New"; font-size: 10pt;">''</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">,</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">[</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">rfReplaceAll</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">]));</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc9" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">end</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">;</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span></div><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p>第一次執行測試就成功:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg5Cyi5cQEhv64NgvVwvcpFbnt1xjGlR4Uq4E10NZzJcm4osFjk_Niac2D6UtpA1s-GnVDeFB5Y9VIo4ZP3HeW9kGNgNLlugtL76T1hrQTwtOUq4XoTW4LZjhBz5eZwFHoIkycruUnJtpnFAFzbRGoyU36J_od_XTRwxNd8uBeexMk9kfy4torv119G3A=s637" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="331" data-original-width="637" height="208" src="https://blogger.googleusercontent.com/img/a/AVvXsEg5Cyi5cQEhv64NgvVwvcpFbnt1xjGlR4Uq4E10NZzJcm4osFjk_Niac2D6UtpA1s-GnVDeFB5Y9VIo4ZP3HeW9kGNgNLlugtL76T1hrQTwtOUq4XoTW4LZjhBz5eZwFHoIkycruUnJtpnFAFzbRGoyU36J_od_XTRwxNd8uBeexMk9kfy4torv119G3A=w400-h208" width="400" /></a></div><br /><p></p><p></p><ul style="text-align: left;"><li>請注意,在 RESTClient.SecureProtocols 並沒有設定 [TLS1,TLS11,TLS12]。</li></ul><p></p><p><br /></p><p></p><ul style="text-align: left;"><li>請注意,如果不想這麼多元件,也可以把 RESTClient.BaseURL 後段的 Method Name 挪移到 RESTRequest.Resource 變成前段,例如:EchoString/Res1Res2。所以第二個 REST Button 的程式碼就不貼了。</li></ul><p></p><p>第二次斷線測試:</p><p>請在第一輪執行四個 Button 後,請把 DSSvrSSL Stop 或是關掉後重新啟動。在第二輪測試,會發現 FireDac 的 Button 都會出現錯誤如下。再依據下一段 Process Monitor 的內容推斷,FireDac 的做法因該是保留了既有的 Session ID,最簡單的解決方式在 FireDac Button 後增加 TFDConnection.Connected := False;。</p><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">---------------------------</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Restcltssl</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">---------------------------</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">HTTP</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">/</span><span class="sc7" style="color: #ff8000; font-family: "Courier New"; font-size: 10pt;">1.1</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc7" style="color: #ff8000; font-family: "Courier New"; font-size: 10pt;">500</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">Session</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">expired</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">---------------------------</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span></div><p><br /></p><p><br /></p><p><br /></p><p>比對一下 13:53:01 的 FireDac 與 13:53:06 的 REST 兩組元件的流量請自行計算:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgBXrJwrQd3XMx5gcLNFqGXmnoTMzca-RacxtX8OuiR1tYt3Z2wKbDRhxz17T8xgLcjUJ6jfPJnPJAqJKVIy85LRE4WZBlv0F_mUkm34ljBPzVk8z6Dw3N9LuBJI_qcm6pQZ5s1v_XoEWnTbBu8tKtv6TBE5xXfKQo1-bObf1VztPB2wzUZBBIIF27Czg=s650" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="650" data-original-width="566" src="https://blogger.googleusercontent.com/img/a/AVvXsEgBXrJwrQd3XMx5gcLNFqGXmnoTMzca-RacxtX8OuiR1tYt3Z2wKbDRhxz17T8xgLcjUJ6jfPJnPJAqJKVIy85LRE4WZBlv0F_mUkm34ljBPzVk8z6Dw3N9LuBJI_qcm6pQZ5s1v_XoEWnTbBu8tKtv6TBE5xXfKQo1-bObf1VztPB2wzUZBBIIF27Czg=s16000" /></a></div><br /><p>Client 的 SSL 就測到這裡<br /></p><div style="text-align: right;">完成 [REST Client 使用 SSL]</div><p></p>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-36076109868893453012022-02-08T17:23:00.007+08:002022-02-09T14:17:25.794+08:00DataSnap Server 使用 SSL<h1 style="text-align: left;">產出免費的 SSL</h1><p>為了測試 DataSnap Server 如何使用 SSL,請依照個人步驟來玩玩吧!首先透過免費的 OpenSSL 給本機電腦發個憑證吧。甚麼是本機電腦?請到個人作業系統中的路徑找到預設 Hosts 設定檔:</p><p>C:\Windows\System32\drivers\etc\hosts (沒有副檔名)</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbaTjld55XTNZlJT1AobvpZ8aKeJBjQL7bAgyxZw4I4PQ7ogfCfR9yNUhRjJ9ALLkMRBUy4yDvqF1Tp88av2lYGUh4U8h0fQXNdrSt9Z8XOzIopR7TvgB26R2Dw9GolE6NCt0E7SGGG3JOQ4POE_RT9L84lp0C7_bqXbxDohNnVdjck_wqWV70jEk4ZA/s700/2022-02-08_11-14-08.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="222" data-original-width="700" height="127" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbaTjld55XTNZlJT1AobvpZ8aKeJBjQL7bAgyxZw4I4PQ7ogfCfR9yNUhRjJ9ALLkMRBUy4yDvqF1Tp88av2lYGUh4U8h0fQXNdrSt9Z8XOzIopR7TvgB26R2Dw9GolE6NCt0E7SGGG3JOQ4POE_RT9L84lp0C7_bqXbxDohNnVdjck_wqWV70jEk4ZA/w400-h127/2022-02-08_11-14-08.png" width="400" /></a></div><br /><p>#20 是 IPv4;#21 是 IPv6。這都是預設值,所以前面有沒有 Mark 符號都一樣的。測試一下:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvcuCInZBmRpC6dmQCn2h5NSx_rsQImQ8L2lmHpj29wwQAADpNeOTgO6R5cX3MhOGkZMzFabe2OazAr935Yr5hgqgwXTff5Eo74T8LWjtZytmX9CF0LSkpOHRuETP8uKIBeQ3vNTTglXmYg7xsSRMkUTSFf9JRo7YlWYRaXQNoZeqjtTUiPfnY8KHwoQ/s490/2022-02-08_11-16-22.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="442" data-original-width="490" height="361" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvcuCInZBmRpC6dmQCn2h5NSx_rsQImQ8L2lmHpj29wwQAADpNeOTgO6R5cX3MhOGkZMzFabe2OazAr935Yr5hgqgwXTff5Eo74T8LWjtZytmX9CF0LSkpOHRuETP8uKIBeQ3vNTTglXmYg7xsSRMkUTSFf9JRo7YlWYRaXQNoZeqjtTUiPfnY8KHwoQ/w400-h361/2022-02-08_11-16-22.png" width="400" /></a></div><br /><h3 style="text-align: left;">下載 OpenSSL</h3><p>下載分兩個步驟。Delphi 所需要的 OpenSSL 的兩個 DLL 檔案,分別是。<a href="https://www.google.com/search?q=docwiki+embarcadero+OpenSSL" target="_blank">Google 搜尋 docwiki embarcadero OpenSSL</a>,第一個跑出來就因該就是 OpenSSL - RAD Studio - Embarcadero DocWiki 網頁。在 Option 2 中進入 OpenSSL compressed library files 連結。個人直接下載最新版本的 win32 版本。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiel5KbEcMBEnWLt34tnPhoGZHx6NUq7v6SB4n7vp2D93gM8OfWolEEKWA9fsn1TrMN1Stz_1XFzai-fkQhQ0oSo29dLLSgXPNzv1l4Ug3DJIspl3uV_0eoBEA5v1LGrjouYfZALunmvTEvCJvGHhJ0mEgFcUAllQKiSqnbnFogY9V6ZZMbPMi0XEzIA/s612/2022-02-08_11-47-14.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="462" data-original-width="612" height="303" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiel5KbEcMBEnWLt34tnPhoGZHx6NUq7v6SB4n7vp2D93gM8OfWolEEKWA9fsn1TrMN1Stz_1XFzai-fkQhQ0oSo29dLLSgXPNzv1l4Ug3DJIspl3uV_0eoBEA5v1LGrjouYfZALunmvTEvCJvGHhJ0mEgFcUAllQKiSqnbnFogY9V6ZZMbPMi0XEzIA/w400-h303/2022-02-08_11-47-14.png" width="400" /></a></div><br /><p>執行命令會出現 can't open config file 的錯誤:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXLEbFQ0BjtHUbdSd8IqZ5AcE_weQYf0WkTbEvpbDfVelRoF0YSc-HfYMklaBsd1WXhqOvJzkwepaqkXT0-aL_So7Es8D_Ht5Hygj4FLPXVn4JYSwqJDkRNyPU7M7-MCtWfjgiNcDpQH5C98NjDoX3w_aOoSRXiimB0mCk-al2NMmZFzFpGp-rXXGfeQ/s515/2022-02-08_11-52-33.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="106" data-original-width="515" height="83" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXLEbFQ0BjtHUbdSd8IqZ5AcE_weQYf0WkTbEvpbDfVelRoF0YSc-HfYMklaBsd1WXhqOvJzkwepaqkXT0-aL_So7Es8D_Ht5Hygj4FLPXVn4JYSwqJDkRNyPU7M7-MCtWfjgiNcDpQH5C98NjDoX3w_aOoSRXiimB0mCk-al2NMmZFzFpGp-rXXGfeQ/w400-h83/2022-02-08_11-52-33.png" width="400" /></a></div><br /><p>第二個步驟,下載 OpenSSL。<a href="https://www.google.com/search?q=sourceforge+openssl" target="_blank">Google 搜尋 Sourceforge OpenSSL</a>,到 Sourceforge OpenSSL 下載最近的 x86 版本。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6udRI_HnZbbZOUFwjGVtxOU56zzkmMGnLLrI-cJpak09Ddr0IKZeNhQb0f_2TJX8cCv-Fdv2d4CJ5DHX9vfU43A7NBdCTIcpKRVwRGkmH_xuZijNLh8udN5CqouWP4NozjYjmwaSBr_2tpPjl2Ae619x6L_HzL5EfbS0At_63eGXA7SGUgzbABI-Cxw/s875/2022-02-08_11-56-52.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="434" data-original-width="875" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6udRI_HnZbbZOUFwjGVtxOU56zzkmMGnLLrI-cJpak09Ddr0IKZeNhQb0f_2TJX8cCv-Fdv2d4CJ5DHX9vfU43A7NBdCTIcpKRVwRGkmH_xuZijNLh8udN5CqouWP4NozjYjmwaSBr_2tpPjl2Ae619x6L_HzL5EfbS0At_63eGXA7SGUgzbABI-Cxw/w400-h199/2022-02-08_11-56-52.png" width="400" /></a></div><br /><p>個人是這麼想的,第一步驟的 Indy 下的 OpenSSL 比較新,所以只提取第二步驟的 Sourceforge 下的 1.0.2j...\OpenSSL\bin\openssl.cfg。複製到:1.0.2q...\ 目錄下,在執行一次發生依樣的錯誤。Google 發現需要設定環境變數 OPENSSL_CONF。因此建立以下批次檔案:0208a.bat</p><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc2" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;"><br /></span></div><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc4" style="color: magenta; font-family: "Courier New"; font-size: 10pt;">@</span><span class="sc2" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">ECHO</span><span class="sc0" style="font-family: "Courier New"; font-size: 10pt;"> ON
</span><span class="sc2" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">SET</span><span class="sc0" style="font-family: "Courier New"; font-size: 10pt;"> OPENSSL_CONF</span><span class="sc7" style="color: red; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">=</span><span class="sc0" style="font-family: "Courier New"; font-size: 10pt;">C:\MyDemo\openssl-1.0.2q-i386-win32\openssl.cnf
</span><span class="sc5" style="color: #0080ff; font-family: "Courier New"; font-size: 10pt;">openssl</span><span class="sc0" style="font-family: "Courier New"; font-size: 10pt;"> req -newkey rsa:2048 -x509 -nodes -keyout localhost.key -new -out localhost.pem -subj /CN=localhost -sha256 -days 3650
</span><span class="sc2" style="color: blue; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">pause</span></div><p><br /></p><p><br /></p><p>執行畫面:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-29Albp9O_oReqmaNmHL6_MJ0Ryr-yZSwZrZw1f-rj-MvJEbdISpoOZ9AxhCEelFFKKlpgSElUdlrnHbJqqtU_7xPtpawzeXzj5JFFgvU5Gci13bVoqurd8vjKPwCNyUK8x5dhmxo20xelAIovjGEPfwG5q741s9k00T7pDGzbNqZDYte9vBc-6X7jQ/s456/2022-02-08_13-42-05.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="273" data-original-width="456" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-29Albp9O_oReqmaNmHL6_MJ0Ryr-yZSwZrZw1f-rj-MvJEbdISpoOZ9AxhCEelFFKKlpgSElUdlrnHbJqqtU_7xPtpawzeXzj5JFFgvU5Gci13bVoqurd8vjKPwCNyUK8x5dhmxo20xelAIovjGEPfwG5q741s9k00T7pDGzbNqZDYte9vBc-6X7jQ/w400-h240/2022-02-08_13-42-05.png" width="400" /></a></div><br /><p>localhost.key、localhost.pem 終於順產了:(好像沒有 Help 描述的這麼簡單)</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcQOJT7ZYJrOpagAuLJAXI-UaB0fkZrM-dMFdhlPGCZVskA_HRqdE6mKv2A6IpiiH8ACnzGzI_bPiyoPKUi4DBzCBz5vWJU4O-aQhJx21V_t4IA3vlvBlgLTjn7D6MnFzwmt_1z0OxE3bmiT-C_WEgqa-KzuiyqyV7VYHXAK3vM1LwSS0YGchpn9560w/s509/2022-02-08_13-45-17.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="225" data-original-width="509" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcQOJT7ZYJrOpagAuLJAXI-UaB0fkZrM-dMFdhlPGCZVskA_HRqdE6mKv2A6IpiiH8ACnzGzI_bPiyoPKUi4DBzCBz5vWJU4O-aQhJx21V_t4IA3vlvBlgLTjn7D6MnFzwmt_1z0OxE3bmiT-C_WEgqa-KzuiyqyV7VYHXAK3vM1LwSS0YGchpn9560w/w400-h176/2022-02-08_13-45-17.png" width="400" /></a></div><br /><h1 style="text-align: left;">DataSnap Server 使用 SSL</h1><h3 style="text-align: left;">DataSnap REST Application 專案</h3><div>快速參考『<a href="https://www.google.com/search?q=docwiki+embarcadero+DataSnap+REST+Application+Wizard+for+Windows" target="_blank">DataSnap REST Application Wizard for Windows</a>』建立使用 OpenSSL 的 Server,有修改的畫面如下:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjol9w1FW0E3MxikLnTPJX9k_5S3wIcrs_7-JCfUGmlZ3KMal9BLdWeRd6ThjivoE6dUoUUD1tiqNVnw3RQNhAkO1M5cFSjJFSBg6ZS-Sfe5VNtvee_0Tvlfi3gk4mfzkqU4I9MmQSEPTiXUwyS9xyQD4-m4M5sDHXTVjB6QSTOBlDtau2d3KHO40GVyw/s521/2022-02-08_14-03-43.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="216" data-original-width="521" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjol9w1FW0E3MxikLnTPJX9k_5S3wIcrs_7-JCfUGmlZ3KMal9BLdWeRd6ThjivoE6dUoUUD1tiqNVnw3RQNhAkO1M5cFSjJFSBg6ZS-Sfe5VNtvee_0Tvlfi3gk4mfzkqU4I9MmQSEPTiXUwyS9xyQD4-m4M5sDHXTVjB6QSTOBlDtau2d3KHO40GVyw/w400-h166/2022-02-08_14-03-43.png" width="400" /></a></div><br /><div>順利 Test 成功了!</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDnVwg_kExCgoSyDPkxJK6YiliVAlYgwo-nPr_x6AgFboQnHOanw4chb_mP2IZqxq8cudurKoiReNXJHv_7wwbi_YC88Wg5Kg3Ver9qOK98xOYX58hw3VopVAeyMvwJxwYvr4BrffzpQoZ1Z8TdABUuCjrn0qc6uICMAka_QwMiCrTCvfHA3d8D5p9ZA/s521/2022-02-08_14-05-36.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="380" data-original-width="521" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDnVwg_kExCgoSyDPkxJK6YiliVAlYgwo-nPr_x6AgFboQnHOanw4chb_mP2IZqxq8cudurKoiReNXJHv_7wwbi_YC88Wg5Kg3Ver9qOK98xOYX58hw3VopVAeyMvwJxwYvr4BrffzpQoZ1Z8TdABUuCjrn0qc6uICMAka_QwMiCrTCvfHA3d8D5p9ZA/w400-h291/2022-02-08_14-05-36.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLSlXowtX1ejUVmR_SIudw7GiUW-hc5JcVg0vAQjWNabyuOw_jblAQSIbjf0WPS2U6usZY7BUs-ScReSHhFO3_I66bohy4tFz-BvsaYdC5Xntxx2zjX3cg7_DVCFGKBE67vq6OOq0rrR6-ALAzg50DdEgYA1pXGMj5gfbLky7acaTZY-5T_nPqOA9Xkg/s521/2022-02-08_14-08-11.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="198" data-original-width="521" height="153" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLSlXowtX1ejUVmR_SIudw7GiUW-hc5JcVg0vAQjWNabyuOw_jblAQSIbjf0WPS2U6usZY7BUs-ScReSHhFO3_I66bohy4tFz-BvsaYdC5Xntxx2zjX3cg7_DVCFGKBE67vq6OOq0rrR6-ALAzg50DdEgYA1pXGMj5gfbLky7acaTZY-5T_nPqOA9Xkg/w400-h153/2022-02-08_14-08-11.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF40yt0nVd0fg618KSNETiQpDGMwZfITh7W0QBUGQOim2Rr_5BJnWUZ99SA5j-ttFoYBM7UeZnMw8Yu6jmvR30DuIKCDiJKf5M1QDtdkjS_PplblvwiAlL6uPNW3DvUteuXJYWwDWpzLUmbdhECygo27itIP3yF0_3AW57K2SkIQ_-Oklq8Wk-zZGlNw/s521/2022-02-08_14-09-19.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="190" data-original-width="521" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF40yt0nVd0fg618KSNETiQpDGMwZfITh7W0QBUGQOim2Rr_5BJnWUZ99SA5j-ttFoYBM7UeZnMw8Yu6jmvR30DuIKCDiJKf5M1QDtdkjS_PplblvwiAlL6uPNW3DvUteuXJYWwDWpzLUmbdhECygo27itIP3yF0_3AW57K2SkIQ_-Oklq8Wk-zZGlNw/w400-h146/2022-02-08_14-09-19.png" width="400" /></a></div>在建立好的程式碼中,事件 FormCreate 已建立好相對應的程式碼:<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguUY-GSyOmnmGa3G1CHQMU6Nq3ij8i7pdwBkOgS2FcWGuus-585Pji_hasGhk5hyZIGGyxm3dpvrly0_pXoeoSuy6WdlzFbzE-VIqYq1qh_9mHsUO1HnjjUBViTmMPOAPkECW8glX7Mn3geHK3ElIyonWl-mnnVFzR2fU3v6JNsCo63ayXb9DV0opyug/s768/2022-02-08_14-15-52.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="308" data-original-width="768" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguUY-GSyOmnmGa3G1CHQMU6Nq3ij8i7pdwBkOgS2FcWGuus-585Pji_hasGhk5hyZIGGyxm3dpvrly0_pXoeoSuy6WdlzFbzE-VIqYq1qh_9mHsUO1HnjjUBViTmMPOAPkECW8glX7Mn3geHK3ElIyonWl-mnnVFzR2fU3v6JNsCo63ayXb9DV0opyug/w400-h160/2022-02-08_14-15-52.png" width="400" /></a></div><br /><h3 style="text-align: left;">除錯</h3><div>第一次測試</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-kc4vGZXK4CpIy4wPkGnXyxHFUTUx2K_BSsjwBH16XgM735KFbhjX6qnG3PueQt5fhknT023rZvO75J8nTx-Aan-hp9vw7QiC87yP9tiwRKk6EJ9tm9grk2gnlVCSkahqKtElnWD8pOyTwd7mc1cNF64Ke55LDJHIMbo6xM6Hn2N6HhJIkQslI0IyjA/s401/2022-02-08_14-17-57.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="173" data-original-width="401" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-kc4vGZXK4CpIy4wPkGnXyxHFUTUx2K_BSsjwBH16XgM735KFbhjX6qnG3PueQt5fhknT023rZvO75J8nTx-Aan-hp9vw7QiC87yP9tiwRKk6EJ9tm9grk2gnlVCSkahqKtElnWD8pOyTwd7mc1cNF64Ke55LDJHIMbo6xM6Hn2N6HhJIkQslI0IyjA/w400-h173/2022-02-08_14-17-57.png" width="400" /></a></div><br /><div>Chrome、Brave、Edge,皆不能開啟,出現 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 錯誤,並顯示 用戶端和伺服器不支援一般 SSL 通訊協定版本或加密套件。可以在 IE、FireFox 勉強開啟與出現警告。透過 FireFox 讀取憑證發現原來是 TLS 1.0 太低:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXSd6xr_Oclf7JxmAFh1EhlW7zLVkss-q4BlBT2eaEXN34gCzTDrzXDt3GghiV83LMAtDSC-ex2PBVrQuj2_Ji3duoK5D-X7NIi8p1wWaMYLpVvteo8yHtbaRvMC1-FXxmmwQ1sMP_jMi7NZV6SPzIKPyq8LCqhy7p9-kQXM9VHYuOM8peF1CfTD7vEw/s602/2022-02-08_14-24-37.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="293" data-original-width="602" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXSd6xr_Oclf7JxmAFh1EhlW7zLVkss-q4BlBT2eaEXN34gCzTDrzXDt3GghiV83LMAtDSC-ex2PBVrQuj2_Ji3duoK5D-X7NIi8p1wWaMYLpVvteo8yHtbaRvMC1-FXxmmwQ1sMP_jMi7NZV6SPzIKPyq8LCqhy7p9-kQXM9VHYuOM8peF1CfTD7vEw/w400-h195/2022-02-08_14-24-37.png" width="400" /></a></div><br /><div>自己拉元件來看預設值,預設值就只有採用 TLS 1.0:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUoA9M_WOobcMhqs-eoC5m-WnJ1m586-0FeOjQnqWZHkilxissKjdkdRGr__ZFXKsM2gfg0ftAtr2W3sKqYcD_uhbDY8RBOJNbjds0Do1QIDGXZH94OXb211qgIvBeBgEsowKRO1s79r5yQIznThlueZZNDhh8VSlpOMmS_K08jROQd1_S9NRj0tZLWw/s377/2022-02-08_14-32-41.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="377" data-original-width="363" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUoA9M_WOobcMhqs-eoC5m-WnJ1m586-0FeOjQnqWZHkilxissKjdkdRGr__ZFXKsM2gfg0ftAtr2W3sKqYcD_uhbDY8RBOJNbjds0Do1QIDGXZH94OXb211qgIvBeBgEsowKRO1s79r5yQIznThlueZZNDhh8VSlpOMmS_K08jROQd1_S9NRj0tZLWw/w385-h400/2022-02-08_14-32-41.png" width="385" /></a></div><div><br /></div>在上述事件 FormCreate 插入 #10 程式碼:<div><br /><div><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"><br /></span></div><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"><br /></span></div><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">LIOHandleSSL</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">SSLOptions</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">SSLVersions</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">:=</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">LIOHandleSSL</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">SSLOptions</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">.</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">SSLVersions</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">+</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">[</span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">sslvTLSv1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">,</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">sslvTLSv1_1</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">,</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc1" style="font-family: "Courier New"; font-size: 10pt;">sslvTLSv1_2</span><span class="sc13" style="color: navy; font-family: "Courier New"; font-size: 10pt; font-weight: bold;">];</span><span class="sc0" style="color: grey; font-family: "Courier New"; font-size: 10pt;">
</span></div></div><div><br /><div><br /></div><div><br /></div><div>第二次測試,就可以繼續前往了(Chrome):</div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl2yk52RLF-ECNyU2zfn3cZSjKvaYzWa5SXp4yJdXKVx_rcEoskbBsZSmNpqC1Pa7WrmL4RFKTMrbTR0SMeLKBdJI6JeIRAgJLqpN7_tp1Y4Hiv_8cWAnmoPZAFOhrQYJAI7aLPy2eUMI_7QPYHaY1OIRpdrZ-kCWpJgoTixwy25vRzH_mggKaTaFdng/s821/2022-02-08_14-44-37.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="269" data-original-width="821" height="131" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl2yk52RLF-ECNyU2zfn3cZSjKvaYzWa5SXp4yJdXKVx_rcEoskbBsZSmNpqC1Pa7WrmL4RFKTMrbTR0SMeLKBdJI6JeIRAgJLqpN7_tp1Y4Hiv_8cWAnmoPZAFOhrQYJAI7aLPy2eUMI_7QPYHaY1OIRpdrZ-kCWpJgoTixwy25vRzH_mggKaTaFdng/w400-h131/2022-02-08_14-44-37.png" width="400" /></a></div><br /><div>FireFox 讀取憑證,顯示 TLS 1.2:</div></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3usxwzh032UeFMFRd1Ho7DevB7aaYDzX1UbeqOxiNkVlH1FKVhZflrFn7upWvdtQkKLVsKT5TWeXLTdsKDfmPKwr9zf5FXJeSQuUBM_1qwVK-9-Ae9HOIK3GSJrZ8DvRVsfCxnKyI27YCaYBPIdOEr-HKI5OI3AW8sZagP9EAjyuW78q_66_mXH2jJg/s602/2022-02-08_14-43-10.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="275" data-original-width="602" height="183" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3usxwzh032UeFMFRd1Ho7DevB7aaYDzX1UbeqOxiNkVlH1FKVhZflrFn7upWvdtQkKLVsKT5TWeXLTdsKDfmPKwr9zf5FXJeSQuUBM_1qwVK-9-Ae9HOIK3GSJrZ8DvRVsfCxnKyI27YCaYBPIdOEr-HKI5OI3AW8sZagP9EAjyuW78q_66_mXH2jJg/w400-h183/2022-02-08_14-43-10.png" width="400" /></a></div>
<p>下一節來測試一下『<a href="https://jasper-hsia.blogspot.com/2022/02/rest-client-ssl.html" target="_blank">REST Client 使用 SSL</a>』</p><br /><div style="text-align: right;">終於完成 [DataSnap Server 使用 SSL]</div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-44308304307504666052021-12-21T15:05:00.004+08:002021-12-21T15:14:44.237+08:00FireDAC 呼叫無回傳值命令<pre class="brush: delphi;" name="code">---------------------------
Client01_svrmethod
---------------------------
[FireDAC][Phys][DS]-308. Cannot open / define command, which does not return
result sets. Hint: use Execute / ExecSQL method for non-SELECT commands.
---------------------------
確定
---------------------------
</pre>
<p>Server Site </p><p>當使用 TFDScript + TFDConnection 連結到 SQL-Server 使用無回傳命令。使用範例:</p>
<pre class="brush: delphi;" name="code"> with FDScript1 do
begin
SQLScripts.Clear;
SQLScripts.Add;
with SQLScripts[0].SQL do
begin
Append('INSERT INTO dbo.balabala(UID,UserID,UserUID)');
Append('VALUES ( ' + QuotedStr(vLoginUID) );
Append(' , ' + QuotedStr(aUserID) );
Append(' , ' + QuotedStr(aUserUID) + ');' );
end;
end;
try
FDScript1.ValidateAll;
FDScript1.ExecuteAll;
Result := vLoginUID;
finally
FDScript1.SQLScripts.Clear;
end; </pre>
<p>當使用 TFDCommand + TFDConnection 連結到 SQL-Server 使用無回傳命令。使用範例:</p>
<pre class="brush: delphi;" name="code"> with FDCommand1 do
begin
with CommandText do
begin
Clear;
Append('INSERT INTO dbo.balabala(UID,UserID,UserUID)');
Append('VALUES ( ' + QuotedStr(vLoginUID) );
Append(' , ' + QuotedStr(aUserID) );
Append(' , ' + QuotedStr(aUserUID) + ');' );
end;
end;
try
FDCommand1.CommandKind := skInsert;<br /> //FDCommand1.Execute; // [FireDAC][Phys][DS]-308<br /> FDCommand1.Open;<br /> Result := vLoginUID;
finally
FDCommand1.CommandText.Clear;
end;
</pre>
<p>Client Site</p><p>當使用 TFDStoredProc + TFDConnection 連結到 DataSnap Server 呼叫已經建立好 TServerMethods1.MethodName1。使用範例:</p>
<pre class="brush: delphi;" name="code"> MethodName1Proc.ParamByName('aUserID').AsString := Edit1.Text;
MethodName1Proc.ParamByName('aUserPWD').AsString := Edit2.Text;
//MethodName1Proc.Active := True; // [FireDAC][Phys][DS]-308
MethodName1Proc.ExecProc;
vLoginUID := MethodName1Proc.ParamByName('ReturnValue').AsString;
</pre>
<p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgucSJcSmUCHMJH0Q6O16Zfkelz5M9qco11XilG2F0p1-_3HEhe8S3iGBx6fxM9_2SlQD7P3ogcyUETOvFUV_YnyzsIkG6JSP_VHhFcFwOV3HE6CCM1HKiULCzTaO7JKrhQQU85UagAURmXneuP1owuj0CbC7fU9cFV3zhQ52eYJzX-0CeYFebV6JBRVQ=s475" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="164" data-original-width="475" src="https://blogger.googleusercontent.com/img/a/AVvXsEgucSJcSmUCHMJH0Q6O16Zfkelz5M9qco11XilG2F0p1-_3HEhe8S3iGBx6fxM9_2SlQD7P3ogcyUETOvFUV_YnyzsIkG6JSP_VHhFcFwOV3HE6CCM1HKiULCzTaO7JKrhQQU85UagAURmXneuP1owuj0CbC7fU9cFV3zhQ52eYJzX-0CeYFebV6JBRVQ=s16000" /></a></div><br /><p>還是可以參考:</p><p>執行命令:<a href="https://docwiki.embarcadero.com/RADStudio/Sydney/en/Executing_Commands_(FireDAC)" target="_blank">Executing Commands (FireDAC)</a></p><p>TFDQuery/StoredProc/UpdateSQL 一堆問題:<a href="https://docwiki.embarcadero.com/RADStudio/Sydney/en/TFDQuery,_TFDStoredProc_and_TFDUpdateSQL_Questions" target="_blank">TFDQuery, TFDStoredProc and TFDUpdateSQL Questions</a></p><p>TFDScript:<a href="https://docwiki.embarcadero.com/Libraries/Seattle/en/FireDAC.Comp.Script.TFDScript" target="_blank">FireDAC.Comp.Script.TFDScript</a></p>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-55972728497589803182021-10-15T12:33:00.006+08:002021-10-15T12:33:44.516+08:00Update affected more than 1 record<pre class="brush: delphi;" name="code">---------------------------
Error
---------------------------
EOleException
Update affected more than 1 record
---------------------------
Cancel
---------------------------
</pre>
很久沒有出現這樣的錯誤訊息,不習慣!
<div>開啟 SQL Server Profiler 找到寫入的 Script,放到 SQL Server Management Studio 執行。</div><div>發現細微的變動:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOiq5N4U0Xsb2oBnRHKdRml3Zc11G1PZkUdvgGg3i8Rw5P9reUUeEpz3jh5fFIk5KF-kM6IFS7IdRE-_m0yqYkPypYJa4XOfD9Y7JRbcjgCVx_L__UzsZnMivthaB30Yo7ZzqRjWg0mPbm/s225/2021-10-15_12-28-47.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="124" data-original-width="225" height="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOiq5N4U0Xsb2oBnRHKdRml3Zc11G1PZkUdvgGg3i8Rw5P9reUUeEpz3jh5fFIk5KF-kM6IFS7IdRE-_m0yqYkPypYJa4XOfD9Y7JRbcjgCVx_L__UzsZnMivthaB30Yo7ZzqRjWg0mPbm/s0/2021-10-15_12-28-47.jpg" width="225" /></a></div><br /><div><br /></div><div>猜出來是 Trigger 寫錯了,導致一次更新到多筆。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJCh26hrQ8Yv05iwF3Vmra0j_TH8V3g7vLASq3ccf5P5oQD9Oa_4Udwgk7UhGSRRc7WTzGBWKp3RbfnBP_Qn5uXAJv7jjPzdSgizBTj8shsQ2zHQloMtV93S8iFXayAJW5gqyTV1oOsykh/s378/2021-10-15_12-30-38.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="92" data-original-width="378" height="78" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJCh26hrQ8Yv05iwF3Vmra0j_TH8V3g7vLASq3ccf5P5oQD9Oa_4Udwgk7UhGSRRc7WTzGBWKp3RbfnBP_Qn5uXAJv7jjPzdSgizBTj8shsQ2zHQloMtV93S8iFXayAJW5gqyTV1oOsykh/s320/2021-10-15_12-30-38.jpg" width="320" /></a></div><br /><div>果然是 Trigger 寫錯!</div><div style="text-align: right;">[Update affected more than 1 record]</div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-9026675742610543322020-09-07T14:33:00.001+08:002020-09-07T14:33:05.373+08:00在 SQL 特定 Query 中來區分大小寫<p>就是稽核密碼原則的需求,必須有一項『區分大小寫 / Case-Sensitivity』與 SQL Server 預設定序(Collation) 不相通。</p><p>更改內容,在 WHERE 子句欄位後方、增加『COLLATE Latin1_General_CS_AS』</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj47Nbcf3NvVcQDGlVed6g14_WYG2HMvyBpAXhtQlIncw_IrceYtmuddD3my4tlGgQclau1dHIcQO_MKXHQuYHU_FAn8B1KJQnwfnJst0uimmERa19SsnBhmfMuYIJmus8CRZF5KtCgViZA/s545/2020-09-07_14-15-20.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="111" data-original-width="545" height="126" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj47Nbcf3NvVcQDGlVed6g14_WYG2HMvyBpAXhtQlIncw_IrceYtmuddD3my4tlGgQclau1dHIcQO_MKXHQuYHU_FAn8B1KJQnwfnJst0uimmERa19SsnBhmfMuYIJmus8CRZF5KtCgViZA/w625-h126/2020-09-07_14-15-20.jpg" width="625" /></a></div>COLLATE (Transact-SQL) <a href="https://docs.microsoft.com/zh-tw/sql/t-sql/statements/collations?redirectedfrom=MSDN&view=sql-server-ver15" target="_blank">參考資料</a><p></p><div>Latin1_General_CS_AS <a href="https://docs.microsoft.com/zh-tw/sql/t-sql/statements/sql-server-collation-name-transact-sql?view=sql-server-ver15" target="_blank">參考資料</a></div><div><div></div><blockquote><div>CaseSensitivity CI 指定不區分大小寫,CS 指定區分大小寫。</div><div>AccentSensitivity AI 指定不區分腔調字,AS 指定區分腔調字。</div></blockquote><p style="text-align: right;">[Case-Sensitivity] </p><div></div></div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-73966175074438712122020-09-06T18:40:00.010+08:002020-09-06T18:43:46.352+08:00Python Numpy Nonzero 非零數值元素指標<div style="text-align: left;">Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)] on win32<br />Type "copyright", "credits" or "license()" for more information.<br />>>> <span style="color: red;">import </span>numpy <span style="color: red;">as </span>np<br />>>> a1 = np.array([[0, 1], [3, 0]], <span style="color: #d5a6bd;">float</span>)<br />>>> a1<br /><span style="color: #2b00fe;">array([[0., 1.],<br /></span><span style="color: #2b00fe;"> [3., 0.]])<br /></span>>>> np.nonzero(a1); a1.nonzero()<br /><span style="color: #2b00fe;">(array([0, 1], dtype=int64), array([1, 0], dtype=int64))<br /></span><span style="color: #2b00fe;">(array([0, 1], dtype=int64), array([1, 0], dtype=int64))<br /></span>>>> a1[np.nonzero(a1)]<br /><span style="color: #2b00fe;">array([1., 3.])<br /></span>>>> np.__version__<br /><span style="color: #2b00fe;">'1.19.1'<br /><div style="text-align: right;"># Indices of nonzero values in an array.</div></span></div><div id="gtx-trans" style="left: 130px; position: absolute; top: 284.2px;"><div class="gtx-trans-icon"></div></div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-69608636644862188982020-08-13T10:31:00.005+08:002020-08-14T14:17:06.899+08:00Win Server 2012 r2 磁碟清理 在哪裡?<p> Windows Server 2012 開始把 UI 幅度降低,為了提升接近 Linux 指令環境的效能... 波拉波拉...!@#$%^&*(?)。Windows Server 2012 r2 預設並沒有安裝『磁碟清理』,所以要安裝請參考:</p><p><a href="https://docs.microsoft.com/zh-tw/windows-server/storage/file-server/disk-cleanup" target="_blank">在 Windows Server 上使用磁碟清理</a></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2ORPAtfLX1G3q3qv_DOSAEKCQSLQ1s5JQoMsA8E-63ylqp065SkUR0mzXLj08goiffg9X04S7HljE5vN7vuaKNln8EQYjz8rWFCl6VixgCfXfkbEdjT2L1F7Ey1dG0NPj6OEddOGSrzRj/s798/2020-08-13_10-07-28.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="404" data-original-width="798" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2ORPAtfLX1G3q3qv_DOSAEKCQSLQ1s5JQoMsA8E-63ylqp065SkUR0mzXLj08goiffg9X04S7HljE5vN7vuaKNln8EQYjz8rWFCl6VixgCfXfkbEdjT2L1F7Ey1dG0NPj6OEddOGSrzRj/s640/2020-08-13_10-07-28.jpg" width="640" /></a></div><p><a href="https://www.saotn.org/windows-server-disk-cleanup/" target="_blank">windows-server-disk-cleanup</a></p><p></p><p></p><blockquote><p>Deployment Image Servicing and Management (DISM) </p><p>Dism.exe /Online /Cleanup-Image /StartComponentCleanup</p><p> </p></blockquote><p></p><p></p><p>這裡還是輕鬆的使用 CClearner \ 選項 \ 包含 \ 增加三個目錄:</p><p></p><blockquote><p>C:\Windows\Logs\CBS\</p><p>C:\Windows\SoftwareDistribution\Download\</p><p>C:\Windows\Temp\</p></blockquote><p></p><p>並且都勾選『只刪除超過指定時間的檔案或資料夾』:24小時。</p><p style="text-align: right;">[Windows Server 2012 r2 磁碟清理]</p>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-30247663762078044182020-07-28T17:17:00.003+08:002020-07-29T14:19:28.797+08:00設定他使用者可以控管 SQL Server Agent 的權限在撰寫兩系統合作的關係連動時,遇到的需求。當系統 Key 使用 User_Key 使用者對雙方合作的 Table 做寫入/資料交換的時候。因為瞬間交易可能頻繁,而在 Trigger 後的動作很可能造成 Table Lock。<div><br /></div><div>我需要在 User_Key 使用者對 TableKey1 寫入後的 Trigger 啟動一個 Schedule 三分鐘後執行的 Job 工作。而這個 Job 內容呼叫的 SP 只是利用批次處裡的特性,來降低單筆瞬間頻繁寫入的缺點。當然這個 Trigger 會記錄有關的 Flag 旗標。</div><div><br /></div><div>現在要給 User_Key 使用者非 sysadmin 這樣的權限。在 SSMS 中的使用者下、『使用者對應』msdb 下、勾選 SQLAgentOperatorRole、SQLAgentReaderRole、SQLAgentUserRole。</div><div><br /></div><div>差異在這裡:<a href="https://docs.microsoft.com/zh-tw/sql/ssms/agent/sql-server-agent-fixed-database-roles?view=sql-server-ver15" target="_blank">SQL Server Agent Fixed Database Roles</a></div><div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjxWQ10gowM_fyfMPLOy2V98c-gOTM6hlxX6Q4NpqzZ53qSJDueb3TXz8limexD6wcimIGu8_bB2oBjsXdJX4Qco2uZ-UNb_BbGLVUzZHpobWBSahvUykMwkuKF43n5utcMriiDxNLSoXB/s700/2020-07-28_AgentRole.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="391" data-original-width="700" height="438" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjxWQ10gowM_fyfMPLOy2V98c-gOTM6hlxX6Q4NpqzZ53qSJDueb3TXz8limexD6wcimIGu8_bB2oBjsXdJX4Qco2uZ-UNb_BbGLVUzZHpobWBSahvUykMwkuKF43n5utcMriiDxNLSoXB/w781-h438/2020-07-28_AgentRole.jpg" width="781" /></a></div><div><br /></div><div>上述問題動用到的物件有:</div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div>msdb.dbo.sysjobs_view</div></div><div><div><a href="https://docs.microsoft.com/zh-tw/sql/ssms/agent/disable-or-enable-a-job?view=sql-server-ver15" target="_blank">msdb.dbo.sp_update_job</a></div></div><div><div>msdb.dbo.sysschedules_localserver_view</div></div><div><div><a href="https://docs.microsoft.com/zh-tw/sql/relational-databases/system-stored-procedures/sp-update-schedule-transact-sql?view=sql-server-ver15" target="_blank">msdb.dbo.sp_update_schedule</a></div></div></blockquote><div><div><br /></div><div>補充一提的,SQLAgentOperatorRole 對資料庫的角色,只能分別對 msdb.dbo.sp_update_job 下 @job_id | @job_name、@enabled 參數;msdb.dbo.sp_update_schedule 下 @schedule_id | @name、@enabled 參數。</div><div><br /></div><div>所以在 Schedule 中就設定『重複』:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyfJRdH09WwaEWBd1slDSbyRdPiPCJswZL6_J4Szip-sSD66HNFPQ-GD8AhCgBV9M0sogqKrNL0-A-ShXYOt-CCIMaI1tZaZ3GFn6GKBsAeXTaad6T34d0YUUvAsAeC3R32_0XXJeidjN4/s662/2020-07-29_Key.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="270" data-original-width="662" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyfJRdH09WwaEWBd1slDSbyRdPiPCJswZL6_J4Szip-sSD66HNFPQ-GD8AhCgBV9M0sogqKrNL0-A-ShXYOt-CCIMaI1tZaZ3GFn6GKBsAeXTaad6T34d0YUUvAsAeC3R32_0XXJeidjN4/w625-h256/2020-07-29_Key.jpg" width="625" /></a></div><div><br /></div><div><br /></div><div>大功告成搂!</div><div style="text-align: right;">[SQL Agent Role]</div></div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-78768179429490944802020-06-12T08:46:00.000+08:002020-06-12T08:46:37.226+08:00Microsoft 相容性遙測、吃掉你的效能今天已經是使用 Windows 10 2004 的第二天了,重新開機因該是五次之多。但一早上個洗手間回來風扇狂起、CPU 飆到 50% 之多,但根本沒在幹什麼。但我看到的時候『Microsoft相容性遙測』數次飆破40%,手腳不快沒有留下最高紀錄。<div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhuwoFSLjpDObzrRR9X4bbJfSYYPd2Sd-ASNrBKcB3CtKItGwkolssEAhlYSLZPA88wMYFMG5WFijBc_D5qhn2aNMbBiXZet7ewBTuhW2-XpZMdg86UrN4Uqdj0ZOl3uU50jZTkfLzI5_o/s425/2020-06-12_08-15-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Microsoft 相容信遙測" border="0" data-original-height="184" data-original-width="425" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhuwoFSLjpDObzrRR9X4bbJfSYYPd2Sd-ASNrBKcB3CtKItGwkolssEAhlYSLZPA88wMYFMG5WFijBc_D5qhn2aNMbBiXZet7ewBTuhW2-XpZMdg86UrN4Uqdj0ZOl3uU50jZTkfLzI5_o/w640-h277/2020-06-12_08-15-03.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div>進入『工作排程器』\ Microsoft \ Windows \ Application Experience。個人是全部都停用,不管了。</div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgewrTtc_-V8jpxIqN64tKYzIuOg5d81Fs-mhXkJjdQHWt0jLnG_AWzQ0lJgjItYEPjCBsiqx_Xxz7MHXVwkb5hsp99t60AWSlanfOpsY3qwNLh7fooHof0ltEsBJqfwxQP10oLmEOQbFyd/s705/2020-06-12_08-23-20.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="373" data-original-width="705" height="339" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgewrTtc_-V8jpxIqN64tKYzIuOg5d81Fs-mhXkJjdQHWt0jLnG_AWzQ0lJgjItYEPjCBsiqx_Xxz7MHXVwkb5hsp99t60AWSlanfOpsY3qwNLh7fooHof0ltEsBJqfwxQP10oLmEOQbFyd/w640-h339/2020-06-12_08-23-20.jpg" width="640" /></a></div><div><br /></div><div>請檢查一下『內容』,內容述說因為你有參加了『Microsoft 客戶經驗改進計畫』。回想一下有參加嗎…、快、要上班了。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWH8Ma3jbT9kO3EHDjla4E_6jOG414vTJAkax_KSlF17ZbX1MJ0jLmbvrq-alS9cgnlgRPAJJuzeKkPpt3XEytlAOvdxtAYJ2WtwR8UG0XR6Yo8d5b9SDA_jbAqcUkKMCVCgi7GzBSlYZx/s488/2020-06-12_08-35-24.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="216" data-original-width="488" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWH8Ma3jbT9kO3EHDjla4E_6jOG414vTJAkax_KSlF17ZbX1MJ0jLmbvrq-alS9cgnlgRPAJJuzeKkPpt3XEytlAOvdxtAYJ2WtwR8UG0XR6Yo8d5b9SDA_jbAqcUkKMCVCgi7GzBSlYZx/w640-h284/2020-06-12_08-35-24.jpg" width="640" /></a></div><div><br /></div><div>別想了,在相同的位置找到:『工作排程器』\ Microsoft \ Windows \ Customer Experience Improvement Program。全部都停用,不管了。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5UxKXhkMOuNn3o44qt9amQUs-1qyslorCSySzcInWNMs30zlqSAMGu0jIHFnDrOdlU4Sv2A1ZbI3JHCpO17ffBsrSquYT9R6TB5Wn-ptvmLDZhDC0eQr_fbNweGaxxZXR-p_omiBlnjSY/s772/2020-06-12_08-30-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="286" data-original-width="772" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5UxKXhkMOuNn3o44qt9amQUs-1qyslorCSySzcInWNMs30zlqSAMGu0jIHFnDrOdlU4Sv2A1ZbI3JHCpO17ffBsrSquYT9R6TB5Wn-ptvmLDZhDC0eQr_fbNweGaxxZXR-p_omiBlnjSY/w640-h237/2020-06-12_08-30-01.jpg" width="640" /></a></div><div><br /></div><div>這次停掉的 Task 有:</div><div><br /></div><div>Application Experience (Microsoft 相容性遙測)</div><div></div><blockquote><div>Microsoft Compatibility Appraiser</div><div>PcaPatchDbTask</div><div>ProgramDataUpdater</div><div>StartupAppTask</div></blockquote><div></div><div>Customer Experience Improvement Program (Microsoft 客戶經驗改進計畫)</div><div></div><blockquote><div>Consolidator</div><div>UsbCeip</div></blockquote><div></div><div style="text-align: center;"><br /></div><div style="text-align: center;">在忙還是要在上班時間泡杯咖啡、</div><div style="text-align: center;"><br /></div><div><br /></div><div style="text-align: right;">[Microsoft Compatibility Appraiser]</div>jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-1317457986563656882020-01-17T14:02:00.003+08:002020-01-17T14:02:51.783+08:00Navigation Toolbar Hot KeyDelphi IDE Navigation Toolbar Hot Key<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGBKLnsaPnPlfYlTjri42BkFEW6etcKxX_ssBIG-x5AfAQncvvZ-8SylBFBH5n90EvM0phsg2rs2SeY3Rrgwq0kBoYuq8hKH_vlrmUiRUzMtACnBg89YjC7EXN8Q4w9T_y94S1pQv-J6CC/s1600/2020-01-17_13-49-04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="445" data-original-width="1047" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGBKLnsaPnPlfYlTjri42BkFEW6etcKxX_ssBIG-x5AfAQncvvZ-8SylBFBH5n90EvM0phsg2rs2SeY3Rrgwq0kBoYuq8hKH_vlrmUiRUzMtACnBg89YjC7EXN8Q4w9T_y94S1pQv-J6CC/s640/2020-01-17_13-49-04.png" width="640" /></a></div>
<br />
<br />
<ul>
<li>Used Units combo box (Ctrl-Alt-N + Ctrl-Alt-U)</li>
<li>File Section combo box (Ctrl-Alt-N + Ctrl-Alt-S)</li>
<li>Types combo box (Ctrl-Alt-N + Ctrl-Alt-T)</li>
<li>Methods combo box (Ctrl-Alt-N + Ctrl-Alt-P)</li>
<li>Project Symbol Search (Ctrl-Alt-N + Ctrl-Alt-F)</li>
</ul>
<br />
<div>
<br /></div>
<div>
Source:</div>
<blockquote class="tr_bq">
Exploring the Navigation Toolbar - CodeRage 2019</blockquote>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/6FwtFupMO0k/0.jpg" src="https://www.youtube.com/embed/6FwtFupMO0k?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div>
<br /></div>
<div style="text-align: right;">
[Exploring the Navigation Toolbar - CodeRage 2019]</div>
jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-76844655024672352252020-01-14T15:05:00.002+08:002020-11-04T13:59:27.286+08:00Delphi 10.3.3 Rio Collect<br />
<p class="MsoNormal"><span lang="EN-US">Delphi 10.3.3 </span><span style="font-family: "新細明體",serif; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">個人蒐集筆記。</span></p>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid black 1.5pt; mso-border-insideh-themecolor: text1; mso-border-insideh: 1.5pt solid black; mso-border-insidev-themecolor: text1; mso-border-insidev: 1.5pt solid black; mso-border-themecolor: text1; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;">
<tbody><tr>
<td style="border: solid black 1.5pt; mso-border-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US" style="color: white; mso-themecolor: background1;">ID</span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></b></p>
</td>
<td style="border-left: none; border: solid black 1.5pt; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">Description<o:p></o:p></span></b></p>
</td>
<td style="border-left: none; border: solid black 1.5pt; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">2019<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/item/30896"><span style="color: #00b0f0; text-decoration-line: none;">30896</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Studio, Delphi, C++Builder 10.3.3 ISO<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ISO for RAD Studio, Delphi, C++Builder
10.3.3 (Update 3)<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/item/30896"><span style="color: #00b0f0;">https://cc.embarcadero.com/item/30896</span></a></span></span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">MD5: 1E2AE01FC465F5AF7E830B381CC2429C<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">10.3 Rio - Release 3<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="http://docwiki.embarcadero.com/RADStudio/Rio/en/10.3_Rio_-_Release_3"><span style="color: #00b0f0;">http://docwiki.embarcadero.com/RADStudio/Rio/en/10.3_Rio_-_Release_3</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">11<br />
16<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="http://cc.embarcadero.com/Item/30899"><span style="color: #00b0f0; text-decoration-line: none;">30899</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Studio 10.3.3 iOS 13 Dark Theme Patch<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/item/30899"><span style="color: #00b0f0;">https://cc.embarcadero.com/item/30899</span></a></span></span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">11<br />
20<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30900"><span style="color: #00b0f0; text-decoration-line: none;">30900</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Studio 10.3.3 iOS Linking Patch<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30900"><span style="color: #00b0f0;">https://cc.embarcadero.com/Item/30900</span></a></span></span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">When linking the debug build of an iOS
app, dsymlink would fail with an assertion and abnormal program termination.<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">12<br />
05<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30903"><span style="color: #00b0f0; text-decoration-line: none;">30903</span></a></span></span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Studio 10.3.3 IDE and VCL Patch<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30903"><span style="color: #00b0f0;">https://cc.embarcadero.com/Item/30903</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Code completion popup leaves scroll bar
window floating<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Using TActionManager or TPopupActionBar
gives error<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">12<br />
13<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30904"><span style="color: #00b0f0; text-decoration-line: none;">30904</span></a></span></span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Studio 10.3.3 Android Debugger Patch<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30904"><span style="color: #00b0f0;">https://cc.embarcadero.com/Item/30904</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Debugging 64 bit Android application
hangs the IDE<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Breakpoints do not work in Android 64
project<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Unable to start GDB kernel after
switching from debugging 32 to 64 Android<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">12<br />
13<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30905"><span style="color: #00b0f0; text-decoration-line: none;">30905</span></a></span></span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Studio 10.3.3 Android Services Patch<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30905"><span style="color: #00b0f0;">https://cc.embarcadero.com/Item/30905</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Prevented an Android service running
because it could not load its native library. This only affected applications
packaged as Android App Bundles.<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">12<br />
20<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30906"><span style="color: #00b0f0; text-decoration-line: none;">30906</span></a></span></span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Studio 10.3.3 Indy Server SSL
Certificate Patch<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30906"><span style="color: #00b0f0;">https://cc.embarcadero.com/Item/30906</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Web Server applications built with the
Indy library are unable to load a SSL certificate.<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">01<br />
10<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US" style="color: #00b0f0;">30879</span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">The Complete Guide to RAD Server eBook<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="http://cc.embarcadero.com/Item/30879"><span style="color: #00b0f0; text-decoration-line: none;">http://cc.embarcadero.com/Item/30879</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">05<br />
07<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30020"><span style="color: #00b0f0; text-decoration-line: none;">30020</span></a></span></span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">StyleControls VCL v.4.55<o:p></o:p></span></p>
<p class="MsoNormal"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30020"><span style="color: #00b0f0;">https://cc.embarcadero.com/Item/30020</span></a></span></span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">StyleControls VCL is a powerfull package
of components, which uses Classic drawing, system Themes and VCL Styles.<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">12<br />
16<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US" style="color: white; mso-themecolor: background1;">ID</span><span lang="EN-US" style="color: #00b0f0;"><o:p></o:p></span></b></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">Description<o:p></o:p></span></b></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><b><span lang="EN-US">2020<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30906"><span style="color: #00b0f0; text-decoration-line: none;">30908</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Studio 10.3.3 iPhone XS and XR
Debugging Patch<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="https://cc.embarcadero.com/item/30908">https://cc.embarcadero.com/item/30908</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Unable to debug an application on an iOS
device using the A12 processor (arm64e), including the iPhone XS and XR<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US">01<o:p></o:p></span></p>
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US">17<o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30906"><span style="color: #00b0f0; text-decoration-line: none;">30910</span></a></span></span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Server Docker Technical Guide (PDF)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="https://cc.embarcadero.com/item/30910">https://cc.embarcadero.com/item/30910</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">overview on RAD Server, how to install
Docker containers and set up a remote RAD Server database<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US">01<o:p></o:p></span></p>
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US">30<o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30906"><span style="color: #00b0f0; text-decoration-line: none;">30914</span></a><o:p></o:p></span></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">RAD Studio 10.3.3 Midas.dll Patch<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="https://cc.embarcadero.com/item/30914">https://cc.embarcadero.com/item/30914</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">(C++Builder 10.3.3 Threading and TLS
Patch) affected Midas. The DLL has been rebuilt.<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US">02<o:p></o:p></span></p>
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US">25<o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span class="MsoHyperlink"><span lang="EN-US" style="color: #00b0f0;"><a href="https://cc.embarcadero.com/Item/30906"><span style="color: #00b0f0; text-decoration-line: none;">30915</span></a><o:p></o:p></span></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span lang="EN-US">Delphi 10.3.3 Open Array Patch<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="https://cc.embarcadero.com/item/30915">https://cc.embarcadero.com/item/30915</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">RSP-23939 Access violation when calling
an inherited function with an open array parameter in Rio Delphi Win64 only<o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US">02<o:p></o:p></span></p>
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US">25<o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid black 1.5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span style="font-family: "新細明體",serif; mso-ascii-theme-font: minor-fareast; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">*</span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top">
<p class="MsoNormal"><span style="font-family: "新細明體",serif; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">如有安裝過</span><span lang="EN-US"> 10.3 ~ 10.3.2
</span><span style="font-family: "新細明體",serif; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">請記得先移除</span><span lang="EN-US"><o:p></o:p></span></p>
</td>
<td style="border-bottom: solid black 1.5pt; border-left: none; border-right: solid black 1.5pt; border-top: none; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-right-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 42.55pt;" width="57">
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US"> </span></p>
</td>
</tr>
</tbody></table><br /><table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid yellow 1.5pt; mso-border-insideh: 1.5pt solid yellow; mso-border-insidev: 1.5pt solid yellow; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;"><tbody>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
Delphi 10.3.3 Version 26.0.36039.7899<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOs_Y2a-Uk1rq8XyI51SOIJDCKcxsllVPMhJB2kvOL8XSw2NBx7-NMU5tflTXSL8eMyF8WhobWj4ohJH8SYGHmRe0YhfhTgUcvcaNiQ3hyphenhyphen3VLkjX0aIleoE_Zy15ZFeSt2XwEvJ5lSoqI6/s1600/2020-01-14_15-20-38.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="255" data-original-width="702" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOs_Y2a-Uk1rq8XyI51SOIJDCKcxsllVPMhJB2kvOL8XSw2NBx7-NMU5tflTXSL8eMyF8WhobWj4ohJH8SYGHmRe0YhfhTgUcvcaNiQ3hyphenhyphen3VLkjX0aIleoE_Zy15ZFeSt2XwEvJ5lSoqI6/s640/2020-01-14_15-20-38.png" width="640" /></a></div>
<br />
修改 Delphi 10.3.3 標題:<br />
<blockquote class="tr_bq">
參考『<a href="https://jasper-hsia.blogspot.com/2019/07/delphi-1032-personalities.html" target="_blank">修正 Delphi 10.3.2 標題 ~ Personalities</a>』</blockquote>
IDE Fix Pack 6.4.4:<br />
<blockquote class="tr_bq">
<a href="https://www.idefixpack.de/blog/2019/07/ide-fix-pack-6-4-4-hotfix-for-delphi-10-3-2/" target="_blank">IDE Fix Pack 6.4.4 Hotfix for Delphi 10.3.3</a></blockquote>
<br />
<div style="text-align: right;">
[Delphi 10.3.3 Work like a little bee]</div>
jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0tag:blogger.com,1999:blog-2288923101279501593.post-83120838540994395102019-12-04T14:53:00.000+08:002019-12-04T15:13:58.791+08:00u-ta/F-HD 室外型 IP CAM 設定紀錄。u-ta/F-HD 室外型 IP CAM 設定紀錄。<br />
<br />
透過 WiFi 連上,透過手機加入攝影鏡頭,必須要開啟 GPS 才可以開啟 WiFi 連線設定。<br />
<span style="font-size: xx-small;">(</span><span style="font-size: xx-small;">這是一個好問題了</span><span style="font-size: xx-small;">!)</span><br />
<br />
透過 WiFi 連上,有線接上後、WiFi 就會斷線。<br />
<br />
開啟 RTSP 並設定密碼後,VLC 無密碼可觀看。<br />
<span style="font-size: xx-small;">(這是一個好問題了!)</span><br />
<br />
RTSP 在 QNAP Surveillance Station 中的設定:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_2rFzxwbLnBaBeNiY2u1JXaCJnutjqcy9WSRIRUTItQOdqL4NDHu4ZMmkT35lUqe4uuyMVS3rkkeNQchFtRdVQxHEU3cdQ_12zeZ2K-MtZc_RFM8-en4P7OyQsJNmSNhY6X_hAOMeeafn/s1600/2019-12-04_14-35-36.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="503" data-original-width="802" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_2rFzxwbLnBaBeNiY2u1JXaCJnutjqcy9WSRIRUTItQOdqL4NDHu4ZMmkT35lUqe4uuyMVS3rkkeNQchFtRdVQxHEU3cdQ_12zeZ2K-MtZc_RFM8-en4P7OyQsJNmSNhY6X_hAOMeeafn/s400/2019-12-04_14-35-36.jpg" width="400" /></a></div>
<br />
市面上的 RTSP 一般都是可以開啟兩個串流,onvif1、可以。同時開啟 onvif2,實測不行。同時開啟 onvif1、手機也不行。所以預估、一次只能一個觀看者。<br />
<br />
RTSP 參考資料:<br />
<blockquote class="tr_bq">
1、主碼流:rtsp://IP:554/onvif1,次碼流:rtsp://IP:554/onvif2<br />
(埠為554,預設沒有密碼)</blockquote>
<blockquote class="tr_bq">
2、RTSP 有加密的路徑為:rtsp://admin:password@IP:554/onvif1<br />
(密碼與使用者設置的設備密碼一致)</blockquote>
<div style="text-align: right;">
[u-ta/F-HD END]</div>
jasper-hsiahttp://www.blogger.com/profile/01800228219721508515noreply@blogger.com0