主题:新手请教,请不悭指教.
			
 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)'.但仍多谢楼上指教.
							 
									
			
我来回复