有关TMemoryStream的size限定和用SPcomm的size限定? |
尚未結案
|
chenpeng20000
一般會員 ![]() ![]() 發表:22 回覆:32 積分:10 註冊:2003-09-17 發送簡訊給我 |
我将COM1的2,3引脚连接,想通过串口控件SPComm发送文件。
int i=0; //全局变量
发送:
TMemoryStream *ms=new TMemoryStream;
ms->LoadFromFile("a.txt");
ms->Position=0;
Comm1->WriteCommData((char *)ms->Memory,ms->Size);
delete ms;
接收:
在Comm1ReceiveData(TObject *Sender, Pointer Buffer,WORD BufferLength)事件中:
TMemoryStream *ms=new TMemoryStream;
ms->Size=BufferLength;
ms->Write(Buffer, ms->Size);
ms->Position=0;
ms->SaveToFile("h:\\" IntToStr(i ) ".txt");
delete ms;
问题:
1。如果a.txt太大,我试了一个70K的文件,接收到的文件内容只有开头几部 分。如果文件很小,则接收并保存的几个文件内容与a.txt一致。
2。关于TMemoryStream和SPComm有没有最大size的限制。
3。如果我想传送几兆大的一个文件,如何分割传送? 努力学习
------
努力学习 |
hao_chih
一般會員 ![]() ![]() 發表:15 回覆:25 積分:18 註冊:2003-09-10 發送簡訊給我 |
您好:這些作法供您參考
void __fastcall TForm1::FormCreate(TObject *Sender) { SaveMemory = new TMemoryStream; SaveMemory->Position=0; }在Comm2ReceiveData事件中 void __fastcall TForm1::Comm2ReceiveData(TObject *Sender, Pointer Buffer, WORD BufferLength) { SaveMemory->Write(Buffer, BufferLength); Label2->Caption = IntToStr(SaveMemory->Size); rData = true; }最後等傳完畢後存檔,可用timer或是自訂指令告知已完畢 void __fastcall TForm1::Button5Click(TObject *Sender) { SaveMemory->SaveToFile("D:\\Test.cpp"); }我傳過400多k文字檔~測試ok |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |