首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

被指针搅昏了,帮忙看一下,该怎么解决

2012-03-02 
被指针搅昏了,帮忙看一下最终目的就是把EXE中的buf指针指向线程中的s_TextStr,得到s_TextStr值-----------

被指针搅昏了,帮忙看一下
最终目的就是把EXE中的buf指针指向线程中的s_TextStr,得到s_TextStr值
--------------------exe文件.cpp--------------------------------
AnsiString*   buf;
typedef   void   __stdcall(*Text)(AnsiString*);
HMODULE   hModule   =   LoadLibrary(AnsiString(ExtractFilePath(Application-> ExeName)   +  

"Text.dll ").c_str());
      if   (hModule)
      {
            Text   ts   =   (Text)GetProcAddress(hModule, "ExecuThread ");
            ts(buf);
      }
ShowMessage(buf);
--------------------DLL.CPP-------------------------------------------
void   __stdcall   ExecuThread(AnsiString*   s_RTextStr)
{
        {
                pThread-> SetRunParameter(s_RTextStr);
                pThread-> Resume();
        }
}
--------------------Thread.h-------------------------------------------
struct   RunParameter       //运行参数
{
        AnsiString   p_PathName;
        AnsiString   *s_RTextStr;
};
class   TMyThread   :   public   TThread
{
private:
        AnsiString   s_TextStr;
}
-----------------------MyThread.cpp-------------------------------------
void   __fastcall   TMyThread::Execute()
{
        &s_TextStr   =   "aaa ";
        RunParameter.s_RTextStr   =   &s_TextStr;
}

RunParameter   *   __fastcall   TMyThread::SetRunParameter(AnsiString   *s_RTextStr)
{
          s_RTextStr   =   RunParameter.s_RTextStr;
}
以上是我写的代码,总感觉不对,就是不知道哪里不对,请指教。

[解决办法]
AnsiString s_TextStr;
&s_TextStr = "aaa ";//這樣操作,危險. 而且我懷疑能否通過編譯
相當於:
void *&p = &s_TextStr ;
p = "aaa " ;

也就是說:這個函數有問題:
-----------------------MyThread.cpp-------------------------------------
void __fastcall TMyThread::Execute()
{
&s_TextStr = "aaa ";
RunParameter.s_RTextStr = &s_TextStr;
//把一個(AnsiString *) RunParameter.s_RTextStr 指向一個(const char * ) "aaa "。
//應該不是你的目的。
}

[解决办法]
en ppower说的很对
在DLL中尽量不要使用String
而使用char *
还有记得内存释放

热点排行