?? scbrow.c
字號:
/*
filename: scbrow.c
purpose: brow the datafile and DBF file
author: wx
date: 2003-3-20
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <8000lib.h>
#include "global.h"
/*brow the DBF file*/
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);
}
}
/*
display the record of the DBF file
*/
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)
{
char c;
char Data[100];
int oldfont;
int flag = 0;//0:first time brow the last record,1:the second time
oldfont = GetFont();
clr_scr();
if(filelength(DataFile) == 0)
{
gotoxy(0, 1);
puts("No Data");
return;
}
SetFont(1);
gotoxy(0, 1);
puts(FileName);
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);
puts(FileName);
switch(c)
{
case KEY_DOWN:
if(eof(DataFile))
{
gotoxy(0, 3);
scputs("the end");
break;
}
readln(DataFile, Data, 100);
gotoxy(0, 3);
clr_eol();
puts(Data);
break;
case KEY_UP:
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:
SetFont(oldfont);
return;
}
}
}//while
}
/*move the file pointer to the up record*/
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;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -