📄 frmmain.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 + -