線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:786
推到 Plurk!
推到 Facebook!

有关TMemoryStream的size限定和用SPcomm的size限定?

尚未結案
chenpeng20000
一般會員


發表:22
回覆:32
積分:10
註冊:2003-09-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-31 16:28:45 IP:211.64.xxx.xxx 未訂閱
我将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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-04 16:24:47 IP:61.63.xxx.xxx 未訂閱
您好:這些作法供您參考 分割發送部分;檔案切割 < 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
系統時間:2024-06-02 7:50:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!