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

📄 keyread.cpp

📁 关于神经网络算法处理的一些程序。开发环境是C
💻 CPP
字号:
//Header:	Keyread
//Version:	1.0
//Language:	Borland C++ 2.0
//Environ:	Any
//Purpose:	Provide a function to acceive a string from keyboard using
//		a conversation bar and a function to acceive a key value
//		from keyboard

#include "keyread.hpp"

  #include <string.h>
//  #include <bios.h>
  #include <conio.h>
  #include <dos.h>
  #include <stdlib.h>

//input a string using input conversation bar
void key_read(char *value,int curx,int cury,int maxn,int wlen)
  {
  int i,ch,j,flag,inflag,curpos,dcount;
  char *buf,*dbuf;
  curpos = 0;
  buf = new char[maxn];
  dbuf = new char[wlen+1];
  i=0; flag=0; inflag=0;
  buf[0]='\x00';
  dbuf[wlen]='\x00';
  _setcursortype(_NORMALCURSOR);
  gotoxy(curx,cury);
  for(dcount=0; dcount<wlen; ++dcount)
    {
    if(strlen(value)<=wlen)
      dbuf[dcount]=value[dcount];
    else
      dbuf[dcount]=value[dcount+strlen(value)-wlen];
    }
  cprintf("%s",dbuf);
  curpos = strlen(dbuf);
  do
    {
    ch=keyvl();
    if(ch==Ins)
      {
      if(inflag==0)
	{
	inflag = 1;
	_setcursortype(_SOLIDCURSOR);
	}
      else
	{
	inflag = 0;
	_setcursortype(_NORMALCURSOR);
	}
      }
    if(flag==0)
      {
      if(ch==LeftArrow)
	{
	strcpy(buf,value);
	i=strlen(buf);
	for(dcount=0; dcount<wlen; ++dcount)
	  {
	  if(i<=wlen)
	    {
	    dbuf[dcount] = buf[dcount];
	    curpos = i;
	    }
	  else
	    {
	    dbuf[dcount] = buf[dcount+i-wlen];
	    curpos = wlen;
	    }
	  }
	if(i>0)
	  {
	  --i;
	  --curpos;
	  }
	gotoxy(curx+curpos,cury);
	}
      else if(ch==Home)
	{
	strcpy(buf,value);
	for(dcount=0; dcount<wlen-1; ++dcount)
	  dbuf[dcount]=buf[dcount];
	gotoxy(curx,cury);
	cprintf("%s",dbuf);
	gotoxy(curx,cury);
	curpos = 0;
	i = 0;
	}
      else
	{
	gotoxy(curx,cury);
	for(dcount=0; dcount<wlen; ++dcount)
	  cprintf("%c",' ');
	gotoxy(curx,cury);
	curpos = 0;
	i = 0;
	}
      flag=1;
      }
    if(ch!=ENTER && ch!=ESC && ch!=BACKSPACE && (strlen(buf)<maxn || inflag==1)
      && ch!=LeftArrow && ch!=RightArrow && ch!=Del && ch!=Home && ch!=Ins
      && ch!=End && ch!=UpArrow && ch!=DownArrow && ch!=PgUp && ch!=PgDn)
      {
      if(inflag!=0)
	{
	if(i<maxn)
	  {
	  if(buf[i]=='\x00')
	    buf[i+1]='\x00';
	  buf[i] = ch;
	  ++i;
	  }
	}
      else
	{
	for(j=strlen(buf); j>=i; --j)
	  buf[j+1]=buf[j];
	buf[i] = ch;
	++i;
	}
      if(curpos>=wlen)
	{
	for(dcount=0; dcount<wlen; ++dcount)
	  dbuf[dcount] = buf[i-wlen+dcount];
	gotoxy(curx,cury);
	cprintf("%s",dbuf);
	curpos = strlen(dbuf);
	}
      else
	{
	for(dcount=0; dcount<wlen; ++dcount)
	  {
	  if(dcount<=strlen(buf))
	    dbuf[dcount] = buf[dcount+i-1-curpos];
	  else
	    dbuf[dcount] = '\x00';
	  }
	gotoxy(curx,cury);
	cprintf("%s",dbuf);
	++curpos;
	}
      gotoxy(curx+curpos,cury);
      }
    if(ch==End)
      {
      i = strlen(buf);
      if(i>=wlen)
	curpos = wlen;
      else
	curpos = i;
      for(dcount=0; dcount<wlen; ++dcount)
	{
	if(i>=wlen)
	  dbuf[dcount] = buf[dcount+i-wlen];
	else
	  dbuf[dcount] = buf[dcount+i];
	}
      gotoxy(curx, cury);
      cprintf("%s",dbuf);
      gotoxy(curx+curpos,cury);
      }
    if(ch==BACKSPACE && i>0)
      {
      for(j=i-1;j<=strlen(buf);++j)
	buf[j]=buf[j+1];
      --i;
      --curpos;
      if(curpos<0)
	curpos = 0;
      for(dcount=0; dcount<wlen; ++dcount)
	dbuf[dcount] = buf[dcount+i-curpos];
      gotoxy(curx,cury);
      for(dcount=0; dcount<wlen; ++dcount)
       cprintf("%c",' ');
      gotoxy(curx,cury);
      cprintf("%s",dbuf);
      gotoxy(curx+curpos,cury);
      }
    if(ch==Home)
      {
      i=0;
      curpos=0;
      gotoxy(curx,cury);
      for(dcount=0; dcount<wlen; ++dcount)
	if(dcount<=strlen(buf))
	  dbuf[dcount] = buf[dcount];
	else
	  dbuf[dcount] = '\x00';
      cprintf("%s",dbuf);
      gotoxy(curx,cury);
      }
    if(ch==LeftArrow  && i>0 && i<=strlen(buf))
      {
      --i;
      --curpos;
      if(curpos<0)
	{
	curpos = 0;
	if(i>0)
	  --i;
	gotoxy(curx, cury);
	for(dcount=0; dcount<wlen; ++dcount)
	  {
	  dbuf[dcount] = buf[i+dcount];
	  cprintf("%c",' ');
	  }
	gotoxy(curx,cury);
	cprintf("%s",dbuf);
	}
      gotoxy(curx+curpos,cury);
      }
    if(ch==RightArrow && i>=0 && i<strlen(buf))
      {
      ++i;
      if(curpos>=wlen)
	{
	gotoxy(curx,cury);
	if(i<strlen(buf))
	  ++i;
	for(dcount=0; dcount<wlen; ++dcount)
	  dbuf[dcount] = buf[i+dcount-wlen];
	cprintf("%s",dbuf);
	curpos = wlen;
	}
      if(curpos<wlen)
	++curpos;
      gotoxy(curx+curpos,cury);
      }
    if(ch==Del && i<maxn)
      {
      for(j=i;j<=strlen(buf); ++j)
	buf[j]=buf[j+1];
      for(dcount=curpos; dcount<wlen; ++dcount)
	{
	if((dcount-curpos+i)<=strlen(buf))
	  dbuf[dcount] = buf[i+dcount-curpos];
	else
	  dbuf[dcount] = '\x00';
	cprintf("%c",' ');
	}
      gotoxy(curx,cury);
      cprintf("%s",dbuf);
      gotoxy(curx+curpos,cury);
      }
    if(strlen(buf)>=maxn && ch!=LeftArrow && ch!=RightArrow && ch!=ENTER &&
       ch!=ESC && ch!=Del && ch!=Home && inflag==0 && ch!=Ins && ch!=End)
      {
      sound(1000);
      delay(20);
      nosound();
      }
    }while(ch!=ENTER && ch!=ESC);
  if(ch==ENTER)
    strcpy(value,buf);
  delete []buf;
  delete []dbuf;
  _setcursortype(_NORMALCURSOR);
  }

//get a key value form keyboard
int keyvl(void)
  {
    int  key_v;
    int value;
    key_v=bioskey(0);
    value=key_v & 0x00ff;
    if(value!=0) value=key_v & 0x00ff;
    else value=key_v & 0xff00;
    return(value);
  };

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -