📄 main.cpp
字号:
// Testdbf1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "test_dbf.h"
#include "xntoy.h"
#define BASE_TEST 1
#define CHECK_HASHNODE 1
#define WRITEDBF_TEST 1
#define READDBF_TEST 1
void init_data(MAINTESTDATA *pdata)
{
memset(pdata, 0, sizeof(MAINTESTDATA));
}
int test();
int test2();
int test3();
int main(int argc, char* argv[])
{
printf("start test...\n");
return test();
// return test2();
//return test3();
}
int test()
{
MAINTESTDATA data;
double rate;
DBFFILE dbf;
clock_t t[2];
int i;
/* char *p[]=
{
NULL,
"",
"\0",
"1\0",
"12\0",
"123\0",
" NP\0",
" NP ",
" NXP ",
" NNXPP "
};
for(i=0;i<10;i++)
{
char *q = Trim((char *)p[i]);
if(q)
{
int len = strlen(q);
printf("i is %d, len = %d, str is:<%s>\n", i, len, q);
}
}
*/
char pp[]=" ";
char *qq = Trim(pp);
printf("qq is <%s>\n", qq);
#if(BASE_TEST)
#define RUN_COUNT 50000
char buf[40];
printf("start check xtoy and xntoy... \n");
t[0] = clock();
for(i=0;i<RUN_COUNT;i++)
{
lntoa(634234, buf, sizeof(buf), 10);
}
t[1] = clock();
printf("lntoa->Run %ld, time is : %ld\n", RUN_COUNT, t[1] - t[0]);
#ifdef WIN32
t[0] = clock();
for(i=0;i<RUN_COUNT;i++)
{
//ltoa(634234, buf, 10);
}
t[1] = clock();
printf("ltoa->Run %ld, time is : %ld\n", RUN_COUNT, t[1] - t[0]);
printf("\tresult->buf is %s\n", buf);
#endif
#endif
#if(WRITEDBF_TEST)
init_data(&data);
if(CreateDBFFile(dbf, "test.dbf"))
{
#if(CHECK_HASHNODE)
int field_count =0 ;
printf("\nstart check hash node ...\n");
for(i=0;i<MAX_FIELDS;i++)
{
int num = 0;
FIELD_HASHNODE *pnode;
pnode = dbf.dbf_handle->field_hashnode [i];
if(pnode)
{
printf("hash node index %d\n", i);
while(pnode)
{
printf("\t%s, index=%d\n", dbf.dbf_handle->field_list[pnode->index], pnode->index);
pnode=pnode->next;
num++;
}
if(num) printf("\t%-8d\n", num);
field_count ++;
}
}
printf("\nfield count is %d,%d\n", field_count,dbf.dbf_handle->field_num);
printf("rec size is %d\n\n", dbf.dbf_handle->dbf_head.rec_size );
#endif
data.Lon = 123.345678;
data.Lat = 30.234567;
#ifdef RUN_COUNT
#undef RUN_COUNT
#endif
#define RUN_COUNT 10000
//////////////////////////////////
//以下调用WriteDBFFile(dbf, &data);
t[0] = clock();
for( i=0;i<RUN_COUNT;i++)
{
WriteDBFFile(dbf, &data);
}
t[1] = clock();
rate = (double)(t[1] - t[0]);
printf("CLOCKS_PER_SEC is %ld\n", CLOCKS_PER_SEC );
printf("write record %ld.\n\ttime is %lf clocks\n\t%.4lf seconds\n",
RUN_COUNT,
rate,
rate/CLOCKS_PER_SEC);
}
// dbf.Zap ();
#endif
return 0;
}
int test2()
{
FIELD_REC field[100];
int num = 0;
char id[12];
int ii, rec, i;
long ll;
double ff, gg;
DBFFILE dbf;
printf("add field ...\n");
dbf.AddField (field[num++], "id", 'C', 12, 0);
dbf.AddField (field[num++], "rec", 'N', 4, 0);
dbf.AddField (field[num++], "Rec", 'a', 2, 3);
dbf.AddField (field[num++], "ii", 'N', 4, 0);
dbf.AddField (field[num++], "ll", 'N', 8, 0);
dbf.AddField (field[num++], "ff", 'N', 12, 6);
dbf.AddField (field[num++], " ", 'N', 12, 6);
dbf.AddField (field[num++], NULL, 'C', 0, 0);
printf("start create file\n");
if(dbf.Create ("test2.dbf", field))
{
for(i=0;i<MAX_FIELDS;i++)
{
if(dbf.dbf_handle->field_list[i] == NULL)
break;
printf("field %d is %11s\n", i, dbf.dbf_handle->field_list[i]->field_rec.field_name);
}
for(i=0;i<3;i++)
{
dbf.Append("rec");
dbf.SetFieldValue("id", "134145");
dbf.SetFieldValue("II", 245245);
dbf.SetFieldValue("LL", 1234567890);
dbf.SetFieldValue("FF", 12345678.345678);
dbf.SetFieldValue(" ", 778899.345678);
dbf.Update();
}
for(i=0;i<3;i++)
{
dbf.Move(i+1);
dbf.GetFieldValue("rec", rec);
dbf.GetFieldValue("ID", id, sizeof(id));
dbf.GetFieldValue("II", ii);
dbf.GetFieldValue("LL", ll);
dbf.GetFieldValue("FF", ff);
dbf.GetFieldValue(" ", gg);
printf("rec is %d\n", rec);
printf("id is %s\n", id);
printf("ii is %ld\n", ii);
printf("ll is %ld\n", ll);
printf("ff is %lf\n", ff);
printf("gg is %lf\n", gg);
}
dbf.Close();
}
else
{
printf("create file error \n");
}
return 1;
}
int test3()
{
char buf[20];
// int i;
long l ;
// int ch[sizeof(i)];
l = 12345678;
lntoa(l , buf, sizeof(buf), 10);
printf("buf is %s\n", buf);
// printf("ch is %d\n", sizeof(ch));
// printf("i is %d\n", sizeof(i));
printf("test3\n");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -