RainyMood 享受漫步在雨中、又不用全身濕透的浪漫,幫助你文思泉湧的雨聲產生器
好像很厲害的感覺,來試試看吧
2013/01/22
2013/01/09
取得所有檔案頪型的版本資訊方法
資料來源:DLL file version
function getFileVersionStr( const sgFileName : string ) : string; var infoSize: DWORD; var verBuf: pointer; var verSize: UINT; var wnd: UINT; var FixedFileInfo : PVSFixedFileInfo; begin infoSize := GetFileVersioninfoSize(PChar(sgFileName), wnd); result := ''; if infoSize <> 0 then begin GetMem(verBuf, infoSize); try if GetFileVersionInfo(PChar(sgFileName), wnd, infoSize, verBuf) then begin VerQueryValue(verBuf, '\', Pointer(FixedFileInfo), verSize); result := IntToStr(FixedFileInfo.dwFileVersionMS div $10000) + '.' + IntToStr(FixedFileInfo.dwFileVersionMS and $0FFFF) + '.' + IntToStr(FixedFileInfo.dwFileVersionLS div $10000) + '.' + IntToStr(FixedFileInfo.dwFileVersionLS and $0FFFF); end; finally FreeMem(verBuf); end; end; end; function getFileVersionInt( const sgFileName : string ) : Integer; var infoSize: DWORD; var verBuf: pointer; var verSize: UINT; var wnd: UINT; var FixedFileInfo : PVSFixedFileInfo; begin infoSize := GetFileVersioninfoSize(PChar(sgFileName), wnd); result := 0; if infoSize <> 0 then begin GetMem(verBuf, infoSize); try if GetFileVersionInfo(PChar(sgFileName), wnd, infoSize, verBuf) then begin VerQueryValue(verBuf, '\', Pointer(FixedFileInfo), verSize); result := StrToInt( IntToStr(FixedFileInfo.dwFileVersionMS div $10000) + IntToStr(FixedFileInfo.dwFileVersionMS and $0FFFF) + IntToStr(FixedFileInfo.dwFileVersionLS div $10000) + IntToStr(FixedFileInfo.dwFileVersionLS and $0FFFF) ); end; finally FreeMem(verBuf); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin ShowMessage(getFileVersionStr('C:\ABC.EXE')); ShowMessage(IntToStr(getFileVersionInt('D:\CDE.DLL'))); end;
2013/01/06
Delphi unicode string VS memorystream
資料來源:
1. Wrtiting string to TMemoryStream - Pointer to string
2. 现有 Delphi 项目迁移到 Tiburon 中的注意事项
擴充的TStreamEx,在D7, Delphi XE下都可正確使用,只能說歪國人真是太厲害了,學習!
1. Wrtiting string to TMemoryStream - Pointer to string
2. 现有 Delphi 项目迁移到 Tiburon 中的注意事项
擴充的TStreamEx,在D7, Delphi XE下都可正確使用,只能說歪國人真是太厲害了,學習!
procedure TStreamEx.WriteString(const data: string); var len: cardinal; oString: UTF8String; begin oString := UTF8String(data); len := length(oString); self.WriteBuffer(len, 4); if len > 0 then self.WriteBuffer(oString[1], len); end; procedure TStreamEx.ReadString(const data: string); var len: cardinal; iString: UTF8String; begin self.ReadBuffer(len, 4); if len > 0 then begin SetLength(iString, len); self.ReadBuffer(iString[1], len); result := string(iString); end else result := ''; end;
2013/01/03
Open Dbexpress 安裝中文說明
中文:
========
使用:
一、移除舊版的Package(PkgDbxXXDrv{%Delphi版本號%}.bpl),並且移除舊版的搜尋路徑
二、安裝新的Package到IDE中,路徑如下:
dbxoodbc\lib\{%Delphi版本號%}\dbxoodbc*.bpl
or
dbxoodbc\lib\{%Delphi版本號%}\dbxoodbc*_emb.bpl
※第二個版本在輸出時不需要外部的「dbxoodbc.dll」
三、複製"dbxoodbc\lib\dbxoodbc_driver\(%Platform%)\release\*dbxoodbc*"目錄下所有的檔案到系統目錄
(例如:{%DELPHI}\Bin)
四、把模組加入到你的專案中,例如:
uses
..., DbxXXDrv;
而下面的方式可以在輸出的時候不需要額外的「dbxoodbc.dll」
uses
..., DbxOpenOdbcStatic;
如果你使用這套Driver時有問題,可以參照下列的方式進行檢查或故障排除
一、加入下列模組到你的專案,它可以讓你進入DbxOpenOdbc.pas進行Debug工作
uses
..., DbxOpenOdbcStatic, DbxXXDrv;
二、如果 DbxOpenOdbc.pas 無法解決你的問題,你必須再深入到
日誌模式(mode of journalizing)
三、要開啟日誌模式,你必須編輯「DbxOpenOdbc_options.inc」單元
並將 {$DEFINE _DEBUG_} 和 {$DEFINE _TRACE_CALLS_} 開啟
然後將 {.$DEFINE _RELEASE_} 關閉
最後,重新編譯你的專案或 OpenODBC 驅動
四、偵錯訊息將會在Delphi IDE裡的EventLog視窗顯示,但只能在開發環境中運行
其它的偵錯方式可使用「Debug View」,詳見:
http://technet.microsoft.com/en-us/sysinternals/bb896647
想更進一步偵錯可參考「DbxOpenOdbcTrace.pas」單元
五、在Debug視窗將顯示資料庫版本、ODBC驅動程式、OpenODBC和連線參數,
你連線的問題將具體表現在這些資訊裡面,這有助於快速找尋及解決問題
這日誌將記錄呼叫的方法...
六、中文翻譯不明白的地方,以英文版的說明為準
========
使用:
一、移除舊版的Package(PkgDbxXXDrv{%Delphi版本號%}.bpl),並且移除舊版的搜尋路徑
二、安裝新的Package到IDE中,路徑如下:
dbxoodbc\lib\{%Delphi版本號%}\dbxoodbc*.bpl
or
dbxoodbc\lib\{%Delphi版本號%}\dbxoodbc*_emb.bpl
※第二個版本在輸出時不需要外部的「dbxoodbc.dll」
三、複製"dbxoodbc\lib\dbxoodbc_driver\(%Platform%)\release\*dbxoodbc*"目錄下所有的檔案到系統目錄
(例如:{%DELPHI}\Bin)
四、把模組加入到你的專案中,例如:
uses
..., DbxXXDrv;
而下面的方式可以在輸出的時候不需要額外的「dbxoodbc.dll」
uses
..., DbxOpenOdbcStatic;
如果你使用這套Driver時有問題,可以參照下列的方式進行檢查或故障排除
一、加入下列模組到你的專案,它可以讓你進入DbxOpenOdbc.pas進行Debug工作
uses
..., DbxOpenOdbcStatic, DbxXXDrv;
二、如果 DbxOpenOdbc.pas 無法解決你的問題,你必須再深入到
日誌模式(mode of journalizing)
三、要開啟日誌模式,你必須編輯「DbxOpenOdbc_options.inc」單元
並將 {$DEFINE _DEBUG_} 和 {$DEFINE _TRACE_CALLS_} 開啟
然後將 {.$DEFINE _RELEASE_} 關閉
最後,重新編譯你的專案或 OpenODBC 驅動
四、偵錯訊息將會在Delphi IDE裡的EventLog視窗顯示,但只能在開發環境中運行
其它的偵錯方式可使用「Debug View」,詳見:
http://technet.microsoft.com/en-us/sysinternals/bb896647
想更進一步偵錯可參考「DbxOpenOdbcTrace.pas」單元
五、在Debug視窗將顯示資料庫版本、ODBC驅動程式、OpenODBC和連線參數,
你連線的問題將具體表現在這些資訊裡面,這有助於快速找尋及解決問題
這日誌將記錄呼叫的方法...
六、中文翻譯不明白的地方,以英文版的說明為準
訂閱:
文章 (Atom)