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

📄 scbrow.c

📁 个人编写的欣技8000应用程序(已经测试稳定的应用程序结构),大大简化应用程序的编写.可应用于欣技700~8000之内的机型
💻 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 + -