目前分類:BCB (15)

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

前言:

四年前在delphi ktop有人提到看盤軟體配合DDE技術,在用delphi實作時發生了亂碼加在後面的情形。http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=97629

當時沒時間,只是大致上猜其原因。四年後的今天,又有一位朋友說他找到如何解的方式。於是讓我再度燃起追其真正的原因。

 

原因:

文章標籤

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

Ⓞ著者:  蕭沖

症狀: 下中斷點後無論如何也進不了,且畫面出不來。但若改成非ide下,直接執行編好的exe檔就很正常!

 

解決方式: 僅需要把一些form改成sizeable,並縮至相較的小後,即可下中斷並切入debug。

 

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

⓪編著: 蕭沖

 

TServerSocket 與 TClientSocket 都算是一個包裝(Wrapper)物件的容器(container),也就是說它本身只是把Socket物件含入裡面,並透過介面來操作含在裡面的Socket物件。

真正有"作用"的Soket物件是TCustomWinSocket這個類別,注意裡面有「Win」這個字,若沒這個字,那就僅用Container,如上面講的TClientSocket。因此,在隨作各種事件與方法時,都是在處理TCustomWinSocket的子類別,如TServerWinSocket ,TServerClientWinSocket等。

當TServerSocket使用stNonBlocking模式時,其實就是選用了Windows Socket Mode 中的WSAAsyncSelect方式(可參考我之前的相關文章(http://aftcast.pixnet.net/blog/post/22191725)。簡單講就是用 Post Windows Message (FD_CONNECT、FD_CLOSE、FD_READ、FD_WRITE、FD_ACCEPT等事件)至Application的方式來處理,因此這時候負責收封包的OnClientRead的handler就算是Thread-safe的。相反的,若是stThreadBlocking模式,則於Accept時,會產生相對應的一個thread來處理與client端的連線,接著會去建立一個thread(你自己定的,參考下面),然後一切的存取都在thread裡,這時候就要注意Thread-safe的問題。必要時要用Critical Section、Synchronize等等。可參考我寫的關於Thread-safe的文章。

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

著作: 蕭沖

自從有dll這種動態連接庫後,lib檔就不再代表是過去dos時代的static lib 了。

給 dll 用的lib,特稱為 import lib,有別於 static lib。import lib 裡記錄的是關於會使用到哪些函式,但其實裡面沒有實作函式的機器碼。 相反的,static lib 是含有程式碼於其中,所以通常檔案也比較大。

但要如何的從一個副檔名lib,來判別他是哪一類呢? 有幾個方法:

1/ 目視法: 看檔案的大小,一般40k以上應該就是 static lib。但當然不夠精準

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

⓪編著: 蕭沖

一般的管理程式,如:sqlitebrowser,它所建立的都是基於 utf8 而生成的 db。

 

在中文的環境下,若使用windows作業系統,個人覺得用unicode(UTF-16)版會比較方便,因為無需轉換utf8格式。

 

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

⓪著作: 蕭沖

 

近來發現BCB6的TClientSocket關於OnRead的事件有些問題:若在事件裡沒有處理到ReceiveBuf這個方法,則下一回的event就不會被觸發。所以,在OnRead的事件裡,無論如何先收資料下來再說! 千萬別一開始就在ReceiveBuf前return或是把ReceiveBuf放在某個if裡。(為何可能會錯誤的那麼做? 因為常常都是想檢查ReceiveLength,若不符合我們要的結構長度,則…)

若不收下來,那所有的封包依舊保留在socket的資料緩衝,於是爆了,接著就當了!!


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

⓪編著: 蕭沖

經過數回合的安裝測式後發現,最好的組合有二種:

1/ BcB6(經過update4) + DsPack231 + DirectX 9.0c 第一版(sum2004) + dxsdk_oct2004_extras (修正vc6用的lib)

2/ BcB6(經過update4) + DsPack234 + DirectX 9.0c dec2004

第一種方式還可以配合VC6的使用。第二種則VC6無法使用,會有許多compiler的錯誤,但DsPack在bcb上是正常的。

aftcast 發表在 痞客邦 留言(4) 人氣()

⓪編著 :蕭沖


寫這篇文章的靈感來源是來自李維在多年前的一篇注名文章:
http://www2.borland.com.tw/tw/reference9.html (2013年補:此文已不見了,有需要的可以向我要備份)

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

New switches for the Pascal DCC32.EXE compiler:
[lb] -jp switch: creates Borland C++ compatible .OBJ files.
[lb] -jph switch: creates C++Builder compatible header (.HPP) files from Object Pascal unit files (.DCL).
[lb] -jphn switch: uses the Object Pascal unit name as the enclosing C++ namespace for both .OBJs and .HPPs that are generated.
[lb] -n switch: specify .DCU output directory

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

⓪編著 :蕭沖


首先,請參照下面重要的export function name的規則。
__________________________________________________________________ 

aftcast 發表在 痞客邦 留言(1) 人氣()

BCB6與BCB2006控件的安裝
--------------------------------------------------------------------------------
來源:http://www.ccrun.com 作者:不詳
一、安裝步驟:(這是廢話)
1、拿到源碼,要全部源碼,不要那種只有部分源碼的包,。

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

◎蕭沖 編著
下載位置更新如下:
http://www.indyproject.org/Sockets/Download/Files/Indy9.EN.aspx
下載9.0.189.0.17,把9.0.189.0.17,把被蓋過的9.0.17拿來當成9.0.18用 (主要是因為要他的17的bat檔)

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

◎蕭沖原創

經常會拿到別人的source code回來compile,於是遇到原來的bpr檔資料和本機的有所出入,就出現一堆的錯誤。所以,稍深入的觀察bpr和project option的關係後,寫下這筆記!

◎修改project的bpr(xml)檔時,最好是在非IDE的情形下。不然經常會被IDE給overwrite。 

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

原作者: 不詳
加註 : 蕭沖

/*
蕭沖 於20051017注記

aftcast 發表在 痞客邦 留言(1) 人氣()

⓪編著 :蕭沖


VCL component msg handling:
Event -> ProcessMessage (TApplication)

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