⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmain.cpp

📁 BCB的学习资料
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <XArray.h>
#include <XByteBuffer.h>
#pragma hdrstop
#include <XSet.h>
#include <XStack.h>
#include "FrmMain.h"
#include "XCRC.h"
#include "XDateTime.h"
#include "XInputByteBuffer.h"
//---------------------------------------------------------------------------

#pragma package(smart_init)
#pragma resource "*.dfm"
using namespace zdhsoft;
TForm1 *Form1;

void test(const zdhsoft::XArray<int> & v,int Index)
{
    ShowMessage(v[Index]);
}

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TestXArrayConstructor();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    TestXDynamicArrayMethod();
}
//---------------------------------------------------------------------------


//测试XArray的构造函数
void TForm1::TestXArrayConstructor(void)
{
    int TestData[10]={
        2,345,346,45,67,
        33,456,3231,4677,42433
    };
    //Test构造函数
    Print("测试XArray<T>的构造函数");
    XDynamicArray<int> TestArray(TestData,10);
    XArray<int> a(10);
    XArray<int> b( TestData, 10 );
    XArray<int> c( b );
    XArray<int> d( TestArray );
    for(int i=0;i<10;i++)
    {
        a[i] = TestData[i];
    }
    Print("Length:%d,%d,%d,%d",a.Length,b.Length,c.Length,d.Length);
    for(int i=0;i<10;i++)
    {
        Print("a=%06d,b=%06d,c=%06d,d=%06d",a[i],b[i],c[i],d[i]);
    }

}
void TForm1::Print(const AnsiString & strText)
{
    Memo1->Lines->Add( strText );
}
void TForm1::Print(char * fmt,...)
{
    va_list argptr;
    va_start(argptr, fmt);
    AnsiString strTmp;
    strTmp.vprintf(fmt,argptr);
    Print( strTmp );
}
void TForm1::TestXArrayMethod(void)
{
    int TmpArray[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
    XArray<int> a(TmpArray,17);
    XArray<int> b(TmpArray,10);
    XArray<int> c;
    //Test 下标访问
    Print("测试下标访问");
    Print(ArrayToString(a));
    Print(ArrayToString(b));
    Print("a.Length=%d,a.GetLength=%d,b.Length=%d,b.GetLength=%d,c.Length=%d,c.GetLength=%d",a.Length,a.GetLength(),b.Length,b.GetLength(),c.Length,c.GetLength());
    Print("a.Data=%08x,b.Data=%08x,c.Data=%08x",a.Data(),b.Data(),c.Data());
    Print("赋值方法测试:");
    c=b;
    Print("c.Length=%d,c.Data=%08x,c=%s",c.Length,c.Data(),ArrayToString(c).c_str());
    c=a;
    Print("c.Length=%d,c.Data=%08x,c=%s",c.Length,c.Data(),ArrayToString(c).c_str());
    c.NewArray(a,5,10);
    Print("c.Length=%d,c.Data=%08x,c=%s",c.Length,c.Data(),ArrayToString(c).c_str());
    XArray<int>::CopyArray(b,2,c,0,5);
    Print("c.Length=%d,c.Data=%08x,c=%s",c.Length,c.Data(),ArrayToString(c).c_str());
}

void __fastcall TForm1::Button4Click(TObject *Sender)
{
    TestXArrayMethod();
}
//---------------------------------------------------------------------------

template<class T>
AnsiString __fastcall TForm1::ArrayToString(const T & aArray)
{
    AnsiString strTmp;
    if(aArray.GetLength()>0)
    {
        for(int i=0;i<aArray.GetLength();i++)
        {
            strTmp += aArray[i];
            if( i<aArray.GetLength()-1)
            {
                strTmp+=",";
            }
        }
    }
    return strTmp;
}

void __fastcall TForm1::Button3Click(TObject *Sender)
{
    TestXDynamicArrayConstructor();
}
//---------------------------------------------------------------------------
void TForm1::TestXDynamicArrayConstructor(void)
{
    int TestData[10]={
        2,345,346,45,67,
        33,456,3231,4677,42433
    };
    //Test构造函数
    Print("测试XDynamicArray<T>的构造函数");
    XArray<int> TestArray(TestData,10);
    XDynamicArray<int> a(10);
    XDynamicArray<int> b( TestData, 10 );
    XDynamicArray<int> c( b );
    XDynamicArray<int> d( TestArray );
    for(int i=0;i<10;i++)
    {
        a[i] = TestData[i];
    }
    Print("Length:%d,%d,%d,%d",a.Length,b.Length,c.Length,d.Length);
    for(int i=0;i<10;i++)
    {
        Print("a=%06d,b=%06d,c=%06d,d=%06d",a[i],b[i],c[i],d[i]);
    }
}
void TForm1::TestXDynamicArrayMethod(void)
{
    Print("测试XDynamicArray所有的方法");
    int TestData[10]={
        2,345,346,45,67,
        33,456,3231,4677,42433
    };
    XDynamicArray<int> TestA,TestB,TestC(TestData,10);
    Print("Test:operator= and operator[]");
    TestB = TestA = TestC;
    Print( "TestA="+ArrayToString(TestA) );
    Print( "TestB="+ArrayToString(TestB) );
    Print( "TestC="+ArrayToString(TestC) );

    Print("Test:Append,Clear,<<,>>");
    {
        for(int i=0;i<10;i++) TestA.Append( i );
        Print( "TestA=" + ArrayToString(TestA));
        TestA.Clear();
        Print( "Clear After: TestA=" + ArrayToString(TestA) );
        TestA.Append( TestC );
        XArray<int> aTmp(10);
        for(int i=0;i<aTmp.Length;i++) aTmp[i]=-i;
        TestA.Append( aTmp );
        TestA.Append(TestData,5);
        Print( "TestA=" + ArrayToString(TestA));
        TestA.Clear();
        TestA<<TestC<<aTmp<<TestA;
        Print( "TestA=" + ArrayToString(TestA));
        
    }

    Print("Test:PopBack,PushBack");
    for(int i=0;i<10;i++) TestA.PushBack(i*i);
    Print("TestA="+ArrayToString(TestA));
    {
        int iTmp;
        while(TestA.PopBack(iTmp))
        {
            Print("PopBack:%d",iTmp);
        }
        while(TestB.PopBack());
        Print("TestB="+ArrayToString(TestB));
    }
    Print("Test:Insert,Delete,DeleteRange");
    {
        TestA.Clear();
        for(int i=0;i<10;i++) TestA.Insert(0,i);
        TestB = TestA;
        Print("TestA="+ArrayToString(TestA));
        TestA.Delete(6);
        Print("Delete 6 After:TestA="+ArrayToString(TestA));
        TestB.DeleteRange(2,4);
        Print("DeleteRange(2,4) After:TestB="+ArrayToString(TestB));
    }
    Print("Test:CopyArray,NewArray");
    {
        XArray<int> aTmp(10);
        for(int i=0;i<aTmp.Length;i++) aTmp[i]=i;
        TestA.NewArray(aTmp,2,3);
        TestB.NewArray(TestC,2,3);
        Print("TestA="+ArrayToString(TestA));
        Print("TestB="+ArrayToString(TestB));
        XDynamicArray<int>::CopyArray(TestA,0,TestB,0,TestA.GetLength());
        Print("TestB="+ArrayToString(TestB));
    }
}

void __fastcall TForm1::Button5Click(TObject *Sender)
{
    XByteBuffer buffer;
    XInt i = 0x01020304;
    XLong j = 0x0102030405060708;

    buffer<<i<<j;
    buffer<<(XFloat)1.1;
    //buffer.AppendBuffer( buffer );
    Print("Buffer="+ArrayToString(buffer));
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)
{
    Print("测试集合");
    XSet<int> a(1,20,100);
    XSet<int> b(10,21,0);
    XSet<int> c;
    c<<30;
    Print("A="+ArrayToString(a));
    Print("B="+ArrayToString(b));
    Print("C="+ArrayToString(c));
    Print("A+B="+ArrayToString(a+b));
    Print("A-B="+ArrayToString(a-b));
    Print("A*B="+ArrayToString(a*b));
    Print("C<<B="+ArrayToString(c<<b));
    c=a;
    Print("C="+ArrayToString(c));
    Print("C+=B="+ArrayToString(c+=b));
    c=a;
    Print("C="+ArrayToString(c));
    Print("C-=B="+ArrayToString(c-=b));
    c=a;
    Print("C="+ArrayToString(c));
    Print("C*=B="+ArrayToString(c*=b));
    c=a;
    Print("A="+ArrayToString(a));
    Print("B="+ArrayToString(b));
    Print("C="+ArrayToString(c));
    Print("C==A:"+IntToStr(c==a));
    Print("C==B:"+IntToStr(c==b));
    Print("C!=A:"+IntToStr(c!=a));
    Print("C!=B:"+IntToStr(c!=b));
    Print("C>>B="+ArrayToString(c>>b));
    Print("C>>1="+ArrayToString(c>>1));
    Print("C<<-1="+ArrayToString(c<<-1));
    Print("a.SubSet(5,15)="+ArrayToString(a.SubSet(5,15))) ;
    Print("a.Empty():"+IntToStr(a.Empty()));
    c.Clear();
    Print("C.Empty():"+IntToStr(c.Empty()));
    Print("a.Contains(10):"+IntToStr(a.Contains(10)));
    Print("a.Contains(EmptySet):"+IntToStr(a.Contains(c)));
    c=a.SubSet(5,15);
    Print("a.Contains(c):"+IntToStr(a.Contains(c)));
    Print("c.Contains(a):"+IntToStr(c.Contains(a)));
    Print("c.Contains(c):"+IntToStr(c.Contains(c)));
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button7Click(TObject *Sender)
{

    XDateTime aDateTime(0);
    XDate aDate(-1,0,0);//aLongDate;
    XTime aTime;
        aDate = aDateTime;
        aTime = aDateTime;
        Print(aDate.ToString()+" "+aTime.ToString());
    for(int i=0;i<40;i++)
    {
        aDate = ++aDateTime;
        aTime = aDateTime;
        Print(aDate.ToString()+" "+aTime.ToString());
    }
    Print("------------");
    for(int i=0;i<40;i++)
    {
        aDate = --aDateTime;
        aTime = aDateTime;
        Print(aDate.ToString()+" "+aTime.ToString());
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button8Click(TObject *Sender)
{
    XByteBuffer aBuffer;
    for(XInt i=0;i<100;i++)
    {
        aBuffer<<i<<(XWord)(i*i);
    }
    Print("BufferSize:%d",aBuffer.GetLength());
    XInputByteBuffer ioRead(aBuffer);
    XInt iTmp;
    XWord dblTmp;
    while( !ioRead.IsEof() )
    {
        ioRead>>iTmp>>dblTmp;
        Print("%d,%d",iTmp,dblTmp);
    }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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