server515impl.cpp

来自「一个cb三层数据库的例子」· C++ 代码 · 共 103 行

CPP
103
字号
#include <vcl.h>
#pragma hdrstop

#include "SERVER515IMPL.H"

#if !defined(__PRAGMA_SMART_INIT_DEFINED)
#define __PRAGMA_SMART_INIT_DEFINED
#pragma package(smart_init)
#endif

#pragma resource "*.dfm"

/////////////////////////////////////////////////////////////////////////////
// Global instance of Tserver515Impl 
/////////////////////////////////////////////////////////////////////////////
Tserver515 *server515;


/////////////////////////////////////////////////////////////////////////////
// Tserver515::Tserver515
/////////////////////////////////////////////////////////////////////////////
__fastcall Tserver515::Tserver515(TComponent* Owner) : TCRemoteDataModule(Owner)
{
}





OleVariant __fastcall Tserver515::server_outDataRequest(TObject *Sender,
      OleVariant &Input)
{
   server_set->Close();
   server_set->CommandText=Input;
   server_set->Open();
   return Input;
}
//---------------------------------------------------------------------------

void __fastcall Tserver515::server_inUpdateData(TObject *Sender,
      TClientDataSet *DataSet)
{
        TMemoryStream* pms;
        TMemoryStream* pms1;
        TImage *Imagetemp=new TImage(this);
        byte *imagedatatemp;
        byte *imagedata;
        bool flag;
        long bytenum,i;
        int begini;
        flag=false;
        pms = new TMemoryStream();
        DataSet->SaveToStream(pms,dfBinary);
        bytenum=pms->Size;
        imagedatatemp=new byte [bytenum];
        pms->Seek(0,soFromBeginning);
        pms->Read(imagedatatemp,bytenum);
        pms->Free();
        for(i=0;i<bytenum;i++)
        {
          if(imagedatatemp[i]==int('B')&&imagedatatemp[i+1]==int('M')&&!flag)
          {
                flag=true;
                begini=i;
                imagedata=new byte [bytenum-i];
          }
          if(flag)
          {
               imagedata[i-begini]=imagedatatemp[i];
          }
        }
        delete [] imagedatatemp;
        pms1 = new TMemoryStream();
        flag=false;
        pms1->Write(imagedata,bytenum-begini);
        delete [] imagedata;
        pms1->Seek(0,soFromBeginning);
        //pms1->SaveToFile("temp.bmp");
        Imagetemp->Picture->Bitmap->LoadFromStream(pms1);
        pms1->Free();
        TADOBlobStream *BS;
        serverq_in->Open();
        serverq_in->Edit();
        BS = new TADOBlobStream((TBlobField*)serverq_in->
        FieldByName("image"), bmReadWrite);
        //ShowMessage(AnsiString(pms1->Size));
        Imagetemp->Picture->Graphic->SaveToStream(BS);
        //Imagetemp->Picture->SaveToFile("c:\\imagedata.bmp");
        //ShowMessage(AnsiString(BS->Size));
        //ShowMessage("here");
        delete (BS);
        begini=0;
        serverq_in->Post();
        serverq_in->Close();
        delete Imagetemp;
}
//---------------------------------------------------------------------------





⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?