online stats

【程式語言】User環境執行BCB程式缺少Library的問題

0 意見

一般來說,在User環境執行BCB程式時,可能會碰到
缺少Library的狀況。
處理方式有兩種…


A. 從開發環境,將缺少的Library補足,可能缺少的元件有:
vcl60.bpl
rtl60.bpl
borlndmm.dll
stlpmt45.dll
CC3260MT.DLL
或直接安裝Borland C++ 6 Runtime Library

B. 在Compiler時注意下列設定…




read more...

【程式語言】Data segment share in a DLL

0 意見

【C++】
依MS網站上的說明,利用#pragma data_seg將需要共用的Variant包在裡面後,
這些變數在DLL Load時會被配置在相同的記憶體,若已配置,則不會再重新配置,
所以不同的程式在使用此Variant時,均是處理同一塊記憶體,藉此達到Variant共用的效果。
需注意的是,這些共用的Variant在宣告時,需給予初始值才能生效;同時不建議
以此方式共享指標或陣列,這可能造成程式中斷。


#pragma data_seg("Shared")
int iSharedVar = 0;
#pragma data_seg()
#pragma comment(linker, "/SECTION:Shared,RWS")

參考資料:
How to specify both shared data and non-shared data in a DLL in Visual C++
範例:
How to share a data segment in a DLL

read more...

【DIY】移除Windows XP內鍵之Windows Messenger

0 意見

Windows XP 內建安裝了 Windows Messenger 4.7 版,對於習慣使用新版 MSN Messenger 的人來說實在很煩人,而且無法在「新增/移除程式」中解除安裝。

最快又完整解決安裝的方法就是從:
「開始」->「執行」-> 在空格內輸入以下指令:
RunDll32 advpack.dll,LaunchINFSection %windir%\INF\msmsgs.inf,BLC.Remove
輸入完成後按確定,等出現成功訊息之後,就完成解除安裝了。

read more...

【Blog】Post Source Code on Blog

0 意見

要在Blog上貼上Source Code有幾個方法,
Formatting Source Code in your Blog這一篇是我看過內容相對完整的,
常見的四種方法都有介紹,有興趣可以參考一下;
接下來是我自己採用的方法,
Format My Source Code for BloggingAdvanced Syntax Highlighting搭配使用,
因為我喜歡Format My Source Code for Blogging簡潔的外框,
但又覺得它的內容太單調,
所以找了Advanced Syntax Highlighting搭配使用,
說穿了就是在既有
Advanced Syntax Highlighting
加入
Format My Source Code for Blogging的外框






read more...

【軟體分享】Google SketchUp

0 意見

Google SketchUp是強有力而且容易學習的3D軟體。
它運用數字化的設計素描與精簡的明確的工具,簡化你在電腦裡3D的設計。
有不少網友利用它來繪製裝潢設計圖(未來應該有機會用到),有興趣的朋友可以研究一下。

軟體名稱:Google SketchUp
軟體性質:免費軟體
作業系統:Windows XP/Vista & Mac OS X (10.4+)
語言介面:英文

中文化:SketchUp7_CHT.rar (10.70 MB)
中文化作者:八耆大蛇

相關網站:CADER設計論壇 > CAD/BIM 電腦輔助設計 > SketchUp





read more...

【DIY】浴室水龍頭更換

0 意見

分享一下網友DIY的經驗,有機會自己動手,可以省下不少開銷。



Mobile01 [居家修繕]浴室水龍頭更換

read more...

【程式語言】Split String

0 意見

【C++】

#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>

char **funcSplit(char* iString, int* iCounter, char * iDelimiter)
{
    char TmpStr[255];
    char* TmpPointer;
    char** TmpStrList = 0;
    int TmpIdx = 0;
    int TmpNOE = 0;
   
    strcpy(TmpStr, iString);
    TmpPointer = strtok(TmpStr, iDelimiter);
    while (TmpPointer != 0 ) {
        TmpStrList = (char**) realloc(TmpStrList, (TmpIdx + 1) * sizeof(char*));
        TmpStrList[TmpIdx] = (char*) malloc((strlen(TmpPointer) + 1));
        strcpy(TmpStrList[TmpIdx], TmpPointer);
        ++TmpIdx;
        TmpPointer = strtok(NULL, iDelimiter);
    }
    *iCounter = TmpIdx;
    return TmpStrList;
}

// Example
int _tmain(int argc, _TCHAR* argv[])
{
//    char TmpStr[255] = "one, two, tree, four,five  six;seven;eight, nine";
    char *TmpStr = "one, two, tree, four,five  six;seven;eight, nine";
    int TmpCounter = 0;
    int TmpIdx = 0;

    char ** TmpStrList = funcSplit( TmpStr, &TmpCounter, " ,;");
    for (TmpIdx = 0; TmpIdx < TmpCounter; ++TmpIdx)
       printf("%s\n", TmpStrList[TmpIdx]);

    for (TmpIdx = 0; TmpIdx < TmpCounter; ++TmpIdx)
       free(TmpStrList[TmpIdx]);

    free(TmpStrList);
    getch();
    return 0;
}



【Delphi】

function funcSplitStr(iSpliter: String; iSourceStr: String): TStrings;
var
    TmpPos: Integer;
    TmpStrList: TStringList;
    TmpStr: String;
begin
    TmpStrList := TStringList.Create;
    TmpPos := pos(iSpliter, iSourceStr);
   
    while (TmpPos > 0) do
    begin
        TmpStr := copy(iSourceStr, 1, (TmpPos - 1));
        TmpStrList.Add(TmpStr);
        iSourceStr := copy (iSourceStr , (TmpPos + Length(iSpliter)), (Length(iSourceStr) - TmpPos - Length(iSpliter) + 1));
        TmpPos := pos(iSpliter, iSourceStr);
    end ;
    TmpStrList.Add(iSourceStr);
   
    Result := TmpStrList;
end;



read more...