回 帖 发 新 帖 刷新版面

主题:新手请教,请不悭指教.

是关于串口通信的一个简单的程序,源码如下://---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "TComm1"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if(Comm1->PortOpen)
{ShowMessage("Port has been opened!");
return;
}
if(RadioGroup1->ItemIndex==0) Comm1->CommPort=pnCOM1;
else  Comm1->CommPort=pnCOM2;
Comm1->PortOpen=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
Comm1->OutputString(Memo1->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
Memo2->Text=Comm1->Input;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
if(!Comm1->PortOpen)
Comm1->PortOpen=false;
exit(0);
}

在文件还没保存时是可以运行的而且调试也成功,但一经保存后便出现错误,如下提示:
[Linker Fatal Error] Fatal: Expected a file name:
此是为何?望不悭指教.

回复列表 (共15个回复)

沙发

c++builder中的一个bug,这无法避免,要删掉几个文件,把你这个程序所有文件写出来,我看看,包括工程文件什么的!它后来应该生成了几个文件,删除后就没事拉!

板凳

//工程文件.
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Initialize();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}
//---------------------------------------------------------------------------

3 楼

一共有七个文件,包括:
Project1.BCBProject,
Project1.cpp,
Project1.OBJ,
Project1.RES,
Unit1(C++Builde FORM类型),
Unit1.cpp
Unit1.h
Unit1.OBJ
Unit1.ddp
大小写不分.

4 楼

Project1.OBJ和Unit1.OBJ文件,把它删拉试下应该就行拉,具体什么原因我只是凭精炼啊!

5 楼

你的方法还是不行,但我把文件保存到C:盘下便可以运行了.仍多谢指教.

6 楼

你还是没解决这种问题,望楼主认真对待这种错误,这种错误很常见!

7 楼

多谢提醒.

8 楼

一个新的问题:
DWORD nBytesRead,dwCommError,i,ReadLen;
COMSTAT CS;
ClearCommError(hComm,&dwCommError,&CS);
FCommError=dwCommError;
if(CS.cbInQue!=0)
{
if(InputLen==0)
ReadLen=InputLen;
if(CS.cbInQue>sizeof(szInputBuffer))
PurgeComm(hComm,PURGE_RXCLEAR);
else
{
if(ReadFile(hComm,szInputBuffer,ReadLen,&nBytesRead,NULL))
{
FInputData=copy(szInputBuffer,1,ReadLen);//出错之处.
FInputData=AnsiString(szInputBuffer,(unsigned int)ReadLen);
FInputByteData.Length=ReadLen;
for(i=0;i<ReadLen;i++)
FInputByteData[i]=szInputBuffer[i];
}
}
}
为何不能调用这个copy函数?提示:E2268 Call to undefined function 'copy',
应该把那个文件包含进来?请不悭指教?

9 楼

C++ builder 6 的安装路径有问题,可能有非法目录名,建议使用默认安装路径,安装至C:\Program Files\ 目录下即可.

10 楼

楼上你的方法我以试过,但仍是发生错误.我加了#include <iostream.h>,发生如此警告:[C++ Error] RS232.cpp(162): E2285 Could not find a match for 'copy<_InputIter,_OutputIter>(char *,int,unsigned long)'.但仍多谢楼上指教.

我来回复

您尚未登录,请登录后再回复。点此登录或注册