全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2072
推到 Plurk!
推到 Facebook!

函式傳值問題

答題得分者是:taishyang
LSonic
一般會員


發表:6
回覆:4
積分:2
註冊:2007-01-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-25 09:13:37 IP:60.250.xxx.xxx 訂閱
小弟想要建構一個函式,傳入的值是字串格式(string type),
函式的格式為OpenFileImage(AnsiString PathName);時
在run時會出現"E2147 'AnsiString' cannot start a parameter declaration"的錯誤,
請問這個問題要如何解決,
小弟是剛碰BCB的新手,試了char是可以過的,
string確不行,一直找不到原因在那,
感謝回答。
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-25 10:36:52 IP:122.124.xxx.xxx 未訂閱
把有問題的程式PO出來吧
LSonic
一般會員


發表:6
回覆:4
積分:2
註冊:2007-01-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-25 11:26:26 IP:59.120.xxx.xxx 訂閱
class __declspec(dllexport) __stdcall SImageDLL
{
private:
int FValue;

public:
SImageDLL();
add(int x, int y);
BOOL OpenFileImage(AnsiString PathName);
};
在BOOL OpenFileImage(AnsiString PathName)這一行compiler時就有錯了,
難道BCB的傳字串只能用char,
因為小弟也試過了Strings,會出現相同的錯誤,
只有用char在compiler時會過而已。
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-25 11:33:54 IP:122.124.xxx.xxx 未訂閱
要不要把整個專案上傳?

LSonic
一般會員


發表:6
回覆:4
積分:2
註冊:2007-01-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-10-25 11:42:22 IP:59.120.xxx.xxx 訂閱
很抱歉,小弟沒有網路的空間,
小弟將.c與.h檔中的內容po出來好了,
.h
//---------------------------------------------------------------------------
#ifndef SImageDLLH
#define SImageDLLH

class __declspec(dllexport) __stdcall SImageDLL
{
private:
int FValue;

public:
SImageDLL();
add(int x, int y);
BOOL OpenFileImage(AnsiString PathName);
};
//---------------------------------------------------------------------------
#endif

.c檔
#include "SImageDLL.h"

SImageDLL::SImageDLL()
{
}
//----------------------------------------------------------------------------//
int SImageDLL::add(int x, int y)
{
return x y;
}
//----------------------------------------------------------------------------//
BOOL SImageDLL::OpenFileImage(AnsiString PathName)
{
return TRUE;
}
//----------------------------------------------------------------------------//

因為小弟寫的程式是要建DLL,
所以整個程式是沒有介面存在的。
編輯記錄
LSonic 重新編輯於 2007-10-25 11:44:57, 註解 無‧
LSonic 重新編輯於 2007-10-25 12:21:34, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-10-25 11:59:53 IP:122.124.xxx.xxx 未訂閱
在.h檔中你是這樣宣告
BOOL OpenFileImage(char *PathName);
但在.cpp檔中你是這樣實作
BOOL SImageDLL::OpenFileImage(AnsiString PathName)
{
return TRUE;
}

編譯當然不會過
LSonic
一般會員


發表:6
回覆:4
積分:2
註冊:2007-01-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-10-25 12:24:30 IP:60.250.xxx.xxx 訂閱
抱歉,copy錯版本的了
po修改後用char可以run的版本,
只是想問問看BCB可不可以用像AnsiString的方式來傳,
再請大大試試試,
如果沒有這種方式的話,那小弟就用char來傳了。
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-10-25 12:28:02 IP:122.124.xxx.xxx 未訂閱
我用AnsiString編譯可以過呀

AnsiString是BCB/Delphi才有的,假如要使用必需
[code cpp]
#include
[/code]
編輯記錄
taishyang 重新編輯於 2007-10-25 12:40:25, 註解 無‧
taishyang 重新編輯於 2007-10-25 12:41:01, 註解 無‧
taishyang 重新編輯於 2007-10-25 12:41:37, 註解 無‧
LSonic
一般會員


發表:6
回覆:4
積分:2
註冊:2007-01-03

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-10-25 13:30:56 IP:60.250.xxx.xxx 訂閱
喔,原來少了include那個.h,

小弟因為是要將vc的dll改成bcb的,

所以算是只看bcb要如何去建dll,

反而沒注意到要include這一點,

謝大大,小弟下次會注意的。
系統時間:2024-05-07 22:33:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!