有关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 發送簡訊給我 |
您好:這些作法供您參考
分割發送部分;檔案切割
< class="code">
TMemoryStream *ms=new TMemoryStream;
ms->LoadFromFile("Test.cpp");
ms->Position=0;
byte myBuffer[2048];
rData = true; //這是檢查對方電腦是否緩衝處理完畢,回傳訊息 while (ms->Position < ms->Size)
{
if (rData)
{
//計算傳送大小
int iMemorySize = ms->Position 2048 >= ms->Size ?
ms->Size - ms->Position : 2048; //讀取buffer
ms->ReadBuffer(myBuffer,iMemorySize);
Comm1->WriteCommData((char *)myBuffer,iMemorySize);
rData = false;
} Application->ProcessMessages();
Sleep(100);
}
delete ms;
接收部分:
首先在.h裡宣告
TMemoryStream *SaveMemory; 然後再.cpp裡 FormCreate事件中
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 最後至於緩衝區的大小是否可調?請參考 > < href="http://delphi.ktop.com.tw/topic.php?topic_id=27940">http://delphi.ktop.com.tw/topic.php?topic_id=27940 發表人 - hao_chih 於 2004/05/04 16:29:10 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |