📄 scbrow.c
字号:
/*-------------------------------------------------------------------------
文件名: scbrow.c
目的: 浏览数据和数据库文件
-------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <8000lib.h>
#include "global.h"
/*浏览 DBF 文件*/
void brow(int DBF_fd, int index, char* filename)
{
int nSelect;
int totalcount;
char c;
clr_scr();
lseek_DBF(DBF_fd, 1, 0, 1);
totalcount = member_in_DBF(DBF_fd);
nSelect = 0;
while(1)
{
if(c = getchar())
{
clr_scr();
switch(c)
{
case KEY_DOWN:
if(nSelect < totalcount - 1)
nSelect += 1;
break;
case KEY_UP:
if(nSelect > 0)
nSelect -= 1;
break;
case KEY_ESC:
return;
}
}
gotoxy(0,1);
scputs(filename);
print(DBF_fd, nSelect);
}
}
/*显示 DBF 文件记录*/
void print(int DBF_fd, int nSelect)
{
int totalcount;
int tail;
int littleSelect;
char sget[100];
totalcount = member_in_DBF(DBF_fd);
gotoxy(7,1);
scprintf("%d/%d", nSelect + 1, totalcount);
tail = nSelect % 3;
littleSelect = (tail == 0) ? nSelect : (tail == 1) ? (nSelect - 1) : (nSelect - 2);
if(lseek_DBF(DBF_fd, 1, littleSelect, 1) != -1)
get_member(DBF_fd, 1, sget);
else
strcpy(sget, " ");
SCDispLine(2, sget, (nSelect % 3 == 0) ? 1 : 0);
if(lseek_DBF(DBF_fd, 1, littleSelect + 1, 1) != -1)
get_member(DBF_fd, 1, sget);
else
strcpy(sget, " ");
SCDispLine(3, sget, (nSelect % 3 == 1) ? 1 : 0);
if(lseek_DBF(DBF_fd, 1, littleSelect + 2, 1) != -1)
get_member(DBF_fd, 1, sget);
else
strcpy(sget, " ");
SCDispLine(4, sget, (nSelect % 3 == 2) ? 1 : 0);
}
void BrowData(int DataFile, char* FileName)
{
int now_num;
char c;
char Data[100];
int oldfont;
int flag = 0; //0:第一次浏览记录,1:第二次
now_num = 1;
oldfont = GetFont();
clr_scr();
if(filelength(DataFile) == 0)
{
gotoxy(0, 1);
scputs("没有数据");
return;
}
SetFont(0);
gotoxy(0, 1);
lseek(DataFile, 0, 1);
readln(DataFile, Data, 100);
gotoxy(0, 3);
puts(Data);
while(1)
{
Data[0] = '\0';
if(c = getchar())
{
clr_scr();
gotoxy(0, 1);
switch(c)
{
case KEY_DOWN:
now_num++;
if(eof(DataFile))
{
gotoxy(0, 3);
scputs("显示完毕");
break;
}
readln(DataFile, Data, 100);
gotoxy(0, 3);
clr_eol();
puts(Data);
break;
case KEY_UP:
now_num--;
if(!eof(DataFile))
{
UpRecord(DataFile);
}
else if(eof(DataFile) && flag == 1)
{
UpRecord(DataFile);
flag = 0;
}
else if(eof(DataFile) && flag == 0)
{
flag = 1;
}
UpRecord(DataFile);
readln(DataFile, Data, 100);
gotoxy(0, 3);
puts(Data);
break;
case KEY_ESC:
clr_scr();
SetFont(oldfont);
return;
}
}
}
}
/*将文件指针向上移动*/
void UpRecord(int DataFile)
{
char temp[5];
while(1)
{
if(lseek(DataFile, -2, 0) == -1)
{
lseek(DataFile, 0, 1);
break;
}
read(DataFile, temp, 1);
if(*temp == '\0')
{
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -