主题:新手请教,请不悭指教.
fqsey02
[专家分:10] 发布于 2005-09-09 22:29:00
是关于串口通信的一个简单的程序,源码如下://---------------------------------------------------------------------------
#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个回复)
沙发
rs0202 [专家分:1030] 发布于 2005-09-07 12:34:00
c++builder中的一个bug,这无法避免,要删掉几个文件,把你这个程序所有文件写出来,我看看,包括工程文件什么的!它后来应该生成了几个文件,删除后就没事拉!
板凳
fqsey02 [专家分:10] 发布于 2005-09-07 13:19:00
//工程文件.
#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 楼
fqsey02 [专家分:10] 发布于 2005-09-07 13:27:00
一共有七个文件,包括:
Project1.BCBProject,
Project1.cpp,
Project1.OBJ,
Project1.RES,
Unit1(C++Builde FORM类型),
Unit1.cpp
Unit1.h
Unit1.OBJ
Unit1.ddp
大小写不分.
4 楼
rs0202 [专家分:1030] 发布于 2005-09-08 12:05:00
Project1.OBJ和Unit1.OBJ文件,把它删拉试下应该就行拉,具体什么原因我只是凭精炼啊!
5 楼
fqsey02 [专家分:10] 发布于 2005-09-08 20:56:00
你的方法还是不行,但我把文件保存到C:盘下便可以运行了.仍多谢指教.
6 楼
rs0202 [专家分:1030] 发布于 2005-09-09 12:17:00
你还是没解决这种问题,望楼主认真对待这种错误,这种错误很常见!
7 楼
fqsey02 [专家分:10] 发布于 2005-09-09 22:19:00
多谢提醒.
8 楼
fqsey02 [专家分:10] 发布于 2005-09-09 22:26:00
一个新的问题:
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 楼
Simple429 [专家分:240] 发布于 2005-09-10 22:23:00
C++ builder 6 的安装路径有问题,可能有非法目录名,建议使用默认安装路径,安装至C:\Program Files\ 目录下即可.
10 楼
fqsey02 [专家分:10] 发布于 2005-09-10 23:23:00
楼上你的方法我以试过,但仍是发生错误.我加了#include <iostream.h>,发生如此警告:[C++ Error] RS232.cpp(162): E2285 Could not find a match for 'copy<_InputIter,_OutputIter>(char *,int,unsigned long)'.但仍多谢楼上指教.
我来回复