请教应用NMUDP控件实现发送和接收数据出现的问题。感谢!

rosana9 2016-10-25 06:22:32
头文件SRData.h 如下:
//---------------------------------------------------------------------------

#ifndef SRDataH
#define SRDataH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <NMUDP.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TEdit *Edit1;
TButton *Button1;
TButton *Button2;
TMemo *Memo1;
TStatusBar *StatusBar1;
TNMUDP *NMUDP1;
TEdit *Edit2;
TEdit *Edit3;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Memo1Change(TObject *Sender);
void __fastcall NMUDP1BufferInvalid(bool &handled,
_ARRAYOF char* Buff, const int Buff_Size, int &length);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

SRData.cpp文件如下:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "SRData.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
{
Edit3->Text=OpenDialog1->Filename;
}
Memo1->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(Edit3->Text=="")
{
ShowMessage("Please select one file");
return;
}
NMUDP1->RemoteHost=Edit1->Text; //设计远程主机和端口号
NMUDP1->RemotePort=StrToInt(Edit2->Text);
NMUDP1->ReportLevel=Nmudp::Status_Basic;
const int ThreshHold=2048; //每次读取2048字节的数据
TFileStream *Strm=new TFileStream(Edit3->Text,fmOpenRead); //载入文件流
char *Buffer=new char[ThreshHold]; // 存放所读数据的缓冲区
int BuffSize=Strm->Size; // 文件大小
int Buffers=BuffSize/ThreshHold; //循环读取次数
for(int i=0;i<=Buffers;i++) //读取文件数据
{
if(BuffSize>2048)
{
Strm->Read(Buffer,ThreshHold);
NUMUDP1->SendBuffer(Buffer,ThreshHold,ThreshHold);
}
else
{
Strm->Read(Buffer,BuffSize);
NMUDP1->SendBuffer(Buffer,ThreshHold,ThreshHold);

BuffSize=ThreshHold;
ShowMessage("hehe");
}
delete[] Buffer;
delete Strm;
Memo1->Lines->Add("");
// 问题报错如下:
[c++Error] SRData.h (32):E2303 Type name expected
[c++Error] SRData.cpp(19):E2451 Undefined symbol 'OpenDialog1'
[c++Error] SRData.cpp(52):E2206 Illegal character '}' (0xa3fd)
[c++Error] SRData.cpp(64):E2089 Identifier 'NMUDP1DataSend' cannot have a type qualifier
[c++Error] SRData.cpp(71):E2206 Illegal character '}' (0xa3fd)
[c++Error] SRData.cpp(77):E2451 Undefined symbol 'TmpBuffer'
[c++Error] SRData.cpp(77):E2451 Undefined symbol 'NumberBytes'
[c++Error] SRData.cpp(80):E2252 'catch' expected

...全文
528 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2016-10-26
  • 打赏
  • 举报
回复
窗体上点击选择NMUDP1,对象检视器——事件,OnDataSend右边格子双击,产生 void __fastcall TForm1::NMUDP1DataSend(TObject *Sender) 事件处理函数,代码写在函数内。 OnDataSend右边格子双击,会改变三个地方: 1、头文件中class TForm1 : public TForm 类中成员函数的声明。 2、.cpp文件中产生该事件处理成员函数框架。 3、右击窗体——作为文本查看,即.dfm窗体描述文件中: object NMUDP1: TNMUDP RemotePort = 0 LocalPort = 0 ReportLevel = 1 OnDataSend = NMUDP1DataSend OnBufferInvalid = NMUDP1BufferInvalid Left = 72 Top = 136 end 要删除一个事件处理函数,把函数体删空(留个空架子,全部注释掉不行),保存文件,就会恢复改变的三个地方。
ooolinux 2016-10-26
  • 打赏
  • 举报
回复
class TForm1 : public TForm 里面没有声明 void __fastcall NMUDP1DataSend(TObject *Sender);
rosana9 2016-10-26
  • 打赏
  • 举报
回复
引用 3 楼 songhtao 的回复:
没有拖控件,没包含头文件
谢谢指点!已经重新编译,仅出现一个问题: [c++Error ]SRDdata.cpp(65):E2089 Identifier 'NMUDP1DataSend' cannot have a type qualifier. 65行的代码前后是:void __fastcall TForm1::NMUDP1DataSend(TObject *Sender) { StatusBar1->Panels->Items[0]->text="File Completed¡£" } 如何解决! 谢谢!
rosana9 2016-10-26
  • 打赏
  • 举报
回复
引用 1 楼 rosana9 的回复:
邮箱回复:rosana2@sina.com QQ:85741820 超级感谢!
引用 2 楼 u010165006 的回复:
OpenDialog1 你窗体上没放?__published段没有OpenDialog1 。
谢谢指点!已经重新编译,仅出现一个问题: [c++Error ]SRDdata.cpp(65):E2089 Identifier 'NMUDP1DataSend' cannot have a type qualifier. 65行的代码前后是:void __fastcall TForm1::NMUDP1DataSend(TObject *Sender) { StatusBar1->Panels->Items[0]->text="File Completed¡£" }
我不懂电脑 2016-10-25
  • 打赏
  • 举报
回复
没有拖控件,没包含头文件
ooolinux 2016-10-25
  • 打赏
  • 举报
回复
OpenDialog1 你窗体上没放?__published段没有OpenDialog1 。
rosana9 2016-10-25
  • 打赏
  • 举报
回复
邮箱回复:rosana2@sina.com QQ:85741820 超级感谢!

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧