目前分類:程式設計 (25)

瀏覽方式: 標題列表 簡短摘要

 

Step 1: 按下功能表,選擇「控制台」

snip_20160611112102.png

 

Step 2: 選擇「安全性」

snip_20160611112129.png

 

Step 3: 切換到「防火牆」頁面,選擇防火牆設定檔,並按下「編輯規則」

snip_20160611112149.png

 

Step 4: 選擇「Cloud Station, MySQL 資料庫, ...」設定檔後,按「編輯」

snip_20160611112211.png

 

Step 5: 來到「編輯防火牆規則」頁面,按下「從內建服務的清單選取連接埠」右邊的「選擇」按鈕

snip_20160611112224.png

 

, , , , , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

1. 確定資料表的結構,有設定主鍵

2. 若是以 ODBC Driver 連接 C++ 與 MySQL Server,在 ODBC 連線設定中,勾選「Return matched rows instead of affected rows」。

如下圖:

找不到要更新的資料列,最後讀取的值已被變更

 

找不到要更新的資料列,最後讀取的值已被變更    


, , , , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

根據[Windows 8] Borland C++ 開發時遇到的問題 - 註冊 OCX 元件的作法,完成 OCX 元件的註冊,

接著,開啟 Borland C++ ow 選單「Project」→「Import Type Library...」→「Add」→選擇 C:\Windows\SysWOW64\您的 OCX 元件,

完成選擇、成功將該 library 加到清單後,按「Install」後,即可順利安裝。


, , , , , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Solution:

Step 1: Install ODBC Driver.

Step 2: Set ODBC Setting in Control Panel

Step 3: Upload Database with Access as following:

Step1

Step2

Step3   

 


, , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Type: Access MDB to MySQL Database

Problem: Table doesn't exist.

Solution: 確定 Table Name 大小寫正確。


, ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Type:Access MDB to MySQL Database

Problem:執行 Delete / DeleteRecord 出現錯誤

Solution:確定轉到 MySQL 的 Table 皆具備主鍵(Primary Key),否則執行時會出現錯誤。

Error Message:row cannot be located for updating. some values may have been changed since it was last read


, , , , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Type: Access MDB 轉為 MySQL Database

差異:查詢/Query 功能

細節:Access 內建的查詢功能,在 MySQL 裡,應以 SQL 指令取代。

 

Solution:

Access:在 Access 中建立 Query Table_A, Tabel_B 並指定關聯欄位為 R_ID

MySQL:select * from Table_A, Table_B where Table_A.R_ID=Table_B.R_ID

 


, , , , , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Borland C++ Warning Message:

[C++ Warning] Dialogs.hpp(437): W8058 Cannot create pre-compiled header: initialized data in header

 

Solution:

Replace "#include <vcl.h>" as #include <vcl>:

#include <vcl.h>  -> #include <vcl>


, , , , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

C++ 的作法:

【Form1】

#include "Unit1.h"

...

public:

bool IsHome;

 

【Form2】

#include "Unit2.h"

#include "Unit1.h"

...

 

Form1->IsHome=...

 

C# 的作法:

【Static Class Page】

, , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

win32api所提供的serial port讀寫方式有分兩種
同步方式: 讀夠了指定的字元才會返回(執行緒不會先返回去做其他工作)
非同步方式: ReadFile/WriteFile函式被呼叫之後,執行緒會先返回,win32api自動幫你新增一個執行緒在背景做IO工作,你必須去檢查OVERLAPPED結構的hEvent物件是否已被觸發,才知道背景IO工作是否已經結束

標準做法是先用WaitForSingleObject去檢查hEvent物件,如果觸發了,才使用GetOverlappedResult去檢查執行的結果(IO工作結束後有很多種結果,讀取到的字元可能介於0~N個你指定的字元,可能是順利讀完之後返回或是因為timeout被迫先返回而實際讀取字元=0或是<N)

win32做IO的方式(serial port/檔案讀寫/和其他IO都適用)會受到timeout的影響,否則同步方式很容易會鎖死,如果是在XP系統,逾時機制的預設值應該都是0,也就是不使用timeout機制
你在開啟通訊埠使用CreateFile函式的時候並沒有指定要用overlapped非同步方式去執行,我也沒看到你有去設定timeout值,所以你的IO執行緒是以同步方式在跑,overlapped結構和設定等等動作是白做的,因為ReadFile根本不會去使用

因此你的程式應該是會鎖死住,一直等到ReadFile讀夠了256個bytes才會返回...,我建議你要把一些事情做好,比較容易debug

1. 開啟通訊埠之後,把UART晶片的緩衝區一律清除掉,否則程式上一次執行所傳送的資料仍然會在緩衝區裡面等著被讀取(至系統記憶體內),事實上一般白牌的UART晶片的接收緩衝區大約是16到256個bytes,很容易就被塞暴,因此windows事實上在背後幫你提早接收了這些資料,並自行保管,等到你去讀取serial port的時候,它就直接把資料給你(系統記憶體的複製動作),所以你會發現寫入serial port返回的時間跟baudrate以及字數有相關,但是讀取serial port卻是""瞬間""完成,即使你的baudrate很低...我把這個稱之為windows所提供的""軟體緩衝區"",實測結果是這個軟體緩衝區可以放超過1MB以上的資料(雖然被灌暴的時候,win32API函式有檢查overrun的事件和機制,也可以警告你,但是資料仍然被存放入軟體緩衝區裡面,一個byte都沒少也不會被丟掉),所以開啟/關閉通訊埠的動作要確實,該清空/reset的動作都要做,不然改過的新程式碼去讀取軟體緩衝區裡面的舊資料,改對了還是可能產生錯誤結果

2. 因為win32api提供了timeout返回的機制,所以你可以沒事就去讀取看看,大不了就是沒資料可讀而已,這種方式特別適合資料固定在流動,但是資料量不定的情況(而且最新資料可以取代舊資料),另一種方式是先檢查接收緩衝區之後,知道了有無字元和實際數量,然後才去做讀取動作,這種方式如果出了問題比較好debug


, , , , , , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Problem:Borland C++ - Project Options 無法開啟,顯示記憶體錯誤

原因:Windows DEP 系統服務

Solution:

控制台→系統→進階→「效能」下的「設定」鈕→

「資料執行防止」→選擇「為所有的 Windows 程式和服務開啟 DEP,除了我選擇的這些」→

「新增」按鈕→選擇 Borland C++ IDE 的應用程式路徑。

 

Reference:http://pcsupport.about.com/od/fixtheproblem/ht/depexplorerexe.htm


,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

判斷目錄是否存在: DirectoryExists(路徑)

強制建立目錄:ForceDirectories(路徑)

如果目錄存在,就不做事;如果不存在,就造一個出來


, , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

http://andy.jgknet.de/blog/ide-tools/ccompiler-enhancements/


, , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Software - Borland C++ Builder

Problem - W8058 Cannot create pre-compiled header: initialized data in header

Solution - Select "None" in Pre-compiled headers section in Project Options Dialog in Borland C++ Builder 6.0.

BCB_Option

 
  


, , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Example:

 → W8071 Conversion may lose significant digits & short & int

 

正確的作法:

short sInt=5;

sInt=short(sInt+5);


, , , , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Problem:QuickRep QRDBRichText 無法輸出資料庫的資料

Type:程式設計

Software:Delphi、C++ Builder (BCB)

需求:輸出大量文字於 QuickRep Preview 上,並自動換行、支援中文


Solution:

使用 QRDBText 元件,設定 AutoSize 屬性為 falsh,AutoStretch 屬性為 true,Wordwrap 屬性為 true 即可。

Reference:http://hackdiy.com/I-7796049.html


, , , ,

genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

【軟體】:Borland C++ Builder 6.0

【Problem】:因在初始化提供者時遭遇錯誤,測試連接失敗。無法開啟工作群組資訊檔案中的 [ MSysAccounts] 資料表。

【解決方法】:檢查資料庫檔名是否為 "system",如 "system.mdb"、"system.db",只要把檔名改為別的就解決了。system 為 IDE 系統保留字,不建議使用。


genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

【軟體】Borland C++ Builder 6.0

【Problem】Program Reset 時出現 InitCC32.exe 問題,IDE 會當掉,必需重開才能繼續撰寫程式。

【解決方法】

Step 1:移除 Borland C++ Builder 6.0

Step 2:重新安裝 Borland C++ Builder 6.0

Step 3:複製一份 Borland\Bin\coreide60.bpl 到別的路徑下

Step 4:安裝 Borland C++ Builder 6.0 Update#4

Step 5:安裝完後,複製剛剛備份下來的 coreide60.bpl 到 Borland\Bin\ 下,覆蓋掉被更新過後的 coreide60.bpl。

Step 6:完成,重新開機,IDE 可正常使用。


genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

16:0-10V

17:0-5V
18:0-2.5V
19:0-1.25V
4:(-10,10)
0:(-5,5)
1:(-2.5,2.5)
2:(-1.25,1.25)
3:(-0.625,0.625)


genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

Default path:

C:\Program Files\Borland\CBuilder5\Bin\coff2omf.exe

 

Command:

coff2omf [source file] [destination file]

 

BCB error message:

Error messages include "OMF".


genlee 發表在 痞客邦 PIXNET 留言(0) 人氣()

1 2