📄 winlib.c
字号:
if(bz==1) je = atof(str) / mod; else je = atof(str); sprintf(fmstr,"%lf",je); strcpy(bp->field[nu]->upbuf,fmstr); *(bp->field[nu]->buf_d)=je; sprintf(fmstr1,"%lf",*(bp->field[nu]->buf_d)); tomoney(fmstr,fmstr1,bp->field[nu]->dlen, bp->field[nu]->scale,0); mvwaddstr(bp->win, bp->field[nu]->y, bp->field[nu]->x, fmstr); wrefresh(bp->win); return(1); break; case CHAR: strncpy(bp->field[nu]->buf_s, str, 1); strncpy(bp->field[nu]->upbuf, str, 1); mvwaddstr(bp->win, bp->field[nu]->y, bp->field[nu]->x, bp->field[nu]->buf_s); wrefresh(bp->win); return(1); break; case SSTR: case MSTR: case MSST: case STR: strcpy(bp->field[nu]->buf_s, str); strcpy(bp->field[nu]->upbuf, str); mvwaddstr(bp->win, bp->field[nu]->y, bp->field[nu]->x, bp->field[nu]->buf_s); wrefresh(bp->win); return(1); break; case MAST: strcpy(bp->field[nu]->buf_s, str); strcpy(bp->field[nu]->upbuf, str); for (k = 0; k < strlen(bp->field[nu]->buf_s); k++) mvwaddch(bp->win, bp->field[nu]->y, bp->field[nu]->x + k, '*'); wrefresh(bp->win); return(1); break; case DAT1: if(chk_date(str)==ERR) return(0); else { strmove(bp->field[nu]->buf_s, str, 10); strmove(bp->field[nu]->upbuf, str, 10); mvwaddstr(bp->win, bp->field[nu]->y, bp->field[nu]->x, bp->field[nu]->buf_s); wrefresh(bp->win); return(1); } break; case DAT2: if(chk_date(str)==ERR) return(0); else { strmove(bp->field[nu]->buf_s, str, 8); strmove(bp->field[nu]->upbuf, str, 8); mvwaddstr(bp->win, bp->field[nu]->y, bp->field[nu]->x, bp->field[nu]->buf_s); wrefresh(bp->win); return(1); } break; default: dperror(bp, "发现非法数据类型!"); return(0); break; } } else { if(bp->field[nu]->nuflag!=YES) { dperror(bp, "不能用空串赋值!"); return(0); } return(1); }}/***** 功能: 指定域显示串值**** 返回: 1 ok 0 error***/dispbuf( p, nu, str)RECORD *p; /*块指针*/short nu; /*域号*/char *str; /*值串*/{char fmstr[20], fmstr1[20], yy[5], mm[3], dd[3];int mod, k;double atof(), je;clearyu(p,nu);if (strlen(str) != 0) { switch (p->field[nu]->type) { case YINT: case UINT: tomoney(fmstr, str, p->field[nu]->dlen, 0, 1 ); mvwaddstr(p->win, p->field[nu]->y, p->field[nu]->x, fmstr); wrefresh(p->win); return(1); break; case UDOU: case DOUB: tomoney(fmstr,str, p->field[nu]->dlen, p->field[nu]->scale, 0 ); mvwaddstr(p->win, p->field[nu]->y, p->field[nu]->x, fmstr); wrefresh(p->win); return(1); break; case CHAR: case SSTR: case MSTR: case MSST: case DAT1: case DAT2: case STR: mvwaddstr(p->win, p->field[nu]->y, p->field[nu]->x, str); wrefresh(p->win); return(1); break; case MAST: for (k = 0; k < strlen(str); k++) mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + k, '*'); wrefresh(p->win); return(1); break; default: dperror(p, "发现非法数据类型!"); return(0); break; }}}/***** 功能: 取指定的域STR值***/getbuf_s(p, nu, str)RECORD *p;short nu;char *str;{ switch (p->field[nu]->type) { case SSTR: case MSTR: case MSST: case MAST: case STR: strcpy(str, p->field[nu]->buf_s); return(1); break; case DAT1: strmove(str, p->field[nu]->buf_s, 10); str[10] = '\0'; return(1); break; case DAT2: strmove(str, p->field[nu]->buf_s, 8); return(1); break; default: dperror(p, "发现非法数据类型!"); return(0); break; }}/***** 功能: 取指定的域CHAR值***/getbuf_c(p, nu, str)RECORD *p;short nu;char *str;{ strncpy(str, p->field[nu]->buf_s, 1); return(1);}/***** 功能: 取指定的域INT值***/getbuf_i(p, nu)RECORD *p;short nu;{ int intm; switch (p->field[nu]->type) { case YINT: case UINT: intm = *(p->field[nu]->buf_i); return(intm); break; default: dperror(p, "发现非法数据类型!"); return(-1); break; }}/***** 功能: 取指定的域DOUBLE值***/double getbuf_d(p, nu)RECORD *p;short nu;{ double dou, atof(); switch (p->field[nu]->type) { case UDOU: case DOUB: dou = *(p->field[nu]->buf_d); return(dou); break; default: dperror(p, "发现非法数据类型!"); return(-1); break; }}/***** 功能: 绝对域跳转***/jmpbuf(p, nu)RECORD *p;short nu;{ if (nu > p->nu) { dperror(p, "跳转域号错误!"); return(0); }/* if (p->field[nu]->flag == NO) { dperror(p, "跳转域不是可进入域!"); return(0); }*/ p->dqnu = --nu; return(1);}/***** 功能: 清除域空间***/clearyu(p,nu)RECORD *p;int nu;{ int i; for (i = 0; i < p->field[nu]->dlen; i++) mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + i, SPACE); if(p->field[nu]->type==DAT1){ mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + 4, '/'); mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + 7, '/'); } if(p->field[nu]->type==DAT2) { mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + 2, '/'); mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + 5, '/'); } wrefresh(p->win);}/***** 功能: 建立SELECT条件串***/gzselect(bp,str,bctab,bcstr)RECORD *bp;char *str;char *bctab;char *bcstr;{ char str1[80],str2[80]; char tstr1[80],tstr2[80]; int i,k,j; for(i=0,k=0,j=0;i<bp->nu;i++,j++) { if(bp->field[i]->tab_fie!=0) { j++; if(j==1) sprintf(tstr1,"select %s ",bp->field[i]->tab_fie); if(j>1) { sprintf(tstr2,",%s ",bp->field[i]->tab_fie); strcat(tstr1,tstr2); } if (bp->field[i]->upbuf[0]!='\0') { k++; if(k==1) { if(bp->field[i]->type>10) sprintf(str1, "where %s =\" %s\" ", bp->field[i]->tab_fie,bp->field[i]->upbuf); else sprintf(str1,"where %s = %s ", bp->field[i]->tab_fie,bp->field[i]->upbuf); } if(k>1){ if(bp->field[i]->type>10) sprintf(str2, "and %s =\" %s\" ", bp->field[i]->tab_fie,bp->field[i]->upbuf); else sprintf(str2,"and %s = %s ", bp->field[i]->tab_fie,bp->field[i]->upbuf); strcat(str1,str2); } } } } if(strlen(str1)>0 && bcstr[0]!='\0') { sprintf(str2,"and %s ",bcstr); strcat(str1,str2); } if(strlen(tstr1)>0 && bctab[0]!='\0') { sprintf(tstr2,",%s ",bctab); strcat(tstr1,tstr2); } if(k==0 && bcstr[0]!='\0') sprintf(str1,"where %s ",bcstr); if(j==0 && bctab[0]!='\0') sprintf(tstr1,"select %s ",bctab); sprintf(str,"%s from %s %s",tstr1,bp->tab_rec,str1);}disprec(bp)RECORD *bp;{ int i; char str[40]; for(i=0;i<bp->nu;i++) { if(bp->field[i]->type==1 || bp->field[i]->type==3) { sprintf(str, "%d", *(bp->field[i]->buf_i)); putbuf(bp,i,str); } else if(bp->field[i]->type==2 || bp->field[i]->type==4) { sprintf(str, "%lf", *(bp->field[i]->buf_d)); putbuf(bp,i,str); } else putbuf(bp,i,bp->field[i]->buf_s); }}/***** 功能: 建立WHERE条件串***/gzwhere(bp,str1,bcstr)RECORD *bp;char *str1;char *bcstr;{ char str2[80]; int i,k; for(i=0,k=0;i<bp->nu;i++) { if (bp->field[i]->upbuf[0]!='\0') { k++; if(k==1) { if(bp->field[i]->type>4) /* old=10 */ sprintf(str1, "where %s =\"%s\" ", bp->field[i]->tab_fie,bp->field[i]->upbuf); else sprintf(str1,"where %s = %s ", bp->field[i]->tab_fie,bp->field[i]->upbuf); } if(k>1){ if(bp->field[i]->type>4 ) sprintf(str2, "and %s =\"%s\" ", bp->field[i]->tab_fie,bp->field[i]->upbuf); else sprintf(str2,"and %s = %s ", bp->field[i]->tab_fie,bp->field[i]->upbuf); strcat(str1,str2); } } } if(strlen(str1)>0 && bcstr[0]!='\0') { sprintf(str2,"and %s ",bcstr); strcat(str1,str2); } if(k==0 && bcstr[0]!='\0') sprintf(str1,"where %s ",bcstr);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -