📄 getdata.c
字号:
#include "../inc/screen.h"/* * 在指定位置读取字符串 , 字符串可以带初值 * 输入输出参数说明: * Col、Row : 输入位置 I * Str : 输入的字符串 I/O * Len : 输入字符串最大长度 I * MustInput: 是否必须输入 I TRUE 是 FALSE 否 * FixLen : 是否定长 I TRUE 是 FALSE 否 */int GetStr ( Col , Row , Str , Len , MustInput , FixLen ) int Row , Col ;char *Str ;int Len , MustInput , FixLen ;{ int num ; char OldStr [ 80 ] ; memset ( OldStr , 0 , 80 ) ; strcpy ( OldStr , Str ) ; wblank ( Col , Row , Len ) ; writerror ( "" ) ; do { num = rdstr ( Col , Row , Str , Len ) ; FFSTD if ( num == BKABORT || num == UPPER ) break ; if ( num != QUIT && num < 0 ) continue ; if ( num == QUIT ) { if ( strlen ( OldStr ) == 0 ) { if ( MustInput == TRUE ) { writerror ( "不能输入空值 !" ) ; continue ; } else break ; } else { strcpy ( Str , OldStr ) ; wblank ( Col , Row, Len ) ; plot ( Col , Row , Str ) ; } } if ( FixLen == TRUE && num != Len ) { writerror ( "必须输入" ) ; printf ( "%d位!" , Len ) ; continue ; } else break ; } while ( 1 ) ; plot ( Col , Row , Str ) ; if ( num == BKABORT ) return ( -99 ) ; else if ( num == UPPER ) return ( -1 ) ; else return ( 1 ) ;}/* * 在指定位置读取数值型字符串 , 字符串可以带初值 * 输入输出参数说明: * Col、Row : 输入位置 I * Str : 输入的字符串 I/O * Len : 输入字符串最大长度 I * MustInput: 是否必须输入 I TRUE 是 FALSE 否 * FixLen : 是否定长 I TRUE 是 FALSE 否 */int GetStrNum( Col , Row , Str , Len , MustInput , FixLen )int Row , Col ;char *Str ;int Len , MustInput , FixLen ;{ int num ; char OldStr [ 80 ] ; memset ( OldStr , 0 , 80 ) ; strcpy ( OldStr , Str ) ; wblank ( Col , Row , Len ) ; writerror ( "" ) ; do { num = rdaccno ( Col , Row , Str , Len ) ; FFSTD if ( num == BKABORT || num == UPPER ) break ; if ( num != QUIT && num < 0 ) continue ; if ( num == QUIT ) { if ( strlen ( OldStr ) == 0 ) { if ( MustInput == TRUE ) { writerror ( "该项必须输入 !" ) ; continue ; } else break ; } else { strcpy ( Str , OldStr ) ; wblank ( Col , Row, Len ) ; plot ( Col , Row , Str ) ; } } else if ( FixLen == TRUE && num != Len ) { writerror ( "必须输入" ) ; printf ( "%d位!" , Len ) ; continue ; } break ; } while ( 1 ) ; plot ( Col , Row , Str ) ; if ( num == BKABORT ) return ( -99 ) ; else if ( num == UPPER ) return ( -1 ) ; else return ( 1 ) ;}/* * 在指定位置读取日期 * 输入输出参数说明: * Col、Row : 输入位置 I * pDate : 输入的日期 I/O * Len : 输入字符串最大长度 I * MustInput: 是否必须输入 I TRUE 是 FALSE 否 */ /*int GetDate ( Col , Row , pDate , MustInput ) int Row , Col ;long *pDate ;int MustInput ;{ int num ; long OldDate ; OldDate = *pDate ; writerror ( "" ) ; do { num = rd_date ( Col , Row , pDate , 3 ) ; FFSTD if ( num == BKABORT || num == UPPER ) break ; if ( num != QUIT && num < 0 ) continue ; if ( num == QUIT ) { if ( OldDate == 0 ) { if ( MustInput == TRUE ) { writerror ( "该项必须输入!" ) ; continue ; } else break ; } else { *pDate = OldDate ; plot_date ( Col , Row , *pDate , "yyyy年mm月dd日") ; } } break ; } while ( 1 ) ; plot_date ( Col , Row , *pDate , "yyyy年mm月dd日") ; if ( num == BKABORT ) return ( -99 ) ; else if ( num == UPPER ) return ( -1 ) ; else return ( 1 ) ;}*//* * 在指定位置读取整数 * 输入输出参数说明: * Col、Row : 输入位置 I * pValue : 输入的值 I/O * Len : 输入字符串最大长度 I * MustInput: 是否必须输入 I TRUE 是 FALSE 否 */int GetInt ( Col , Row , pValue , Len , MustInput ) int Row , Col ;int *pValue ;int Len , MustInput ;{ int num ; int OldValue ; char tmpValue [ 20 ] ; char fmt [ 20 ] ; OldValue = *pValue ; wblank ( Col , Row , Len ) ; strcpy ( tmpValue , "" ) ; sprintf ( fmt , "%c%dd" , '%' , Len ) ; writerror ( "" ) ; do { num = rdaccno ( Col , Row , tmpValue , Len ) ; FFSTD if ( num == BKABORT || num == UPPER ) break ; if ( num != QUIT && num < 0 ) continue ; if ( num == QUIT ) { if ( OldValue == 0 ) { if ( MustInput == TRUE ) { writerror ( "该项必须输入!" ) ; continue ; } else break ; } else { *pValue = OldValue ; plot_int ( Col , Row , *pValue , fmt ) ; } } else { tmpValue [ num ] = 0x00 ; *pValue = atoi ( tmpValue ) ; plot_int ( Col , Row , *pValue , fmt ) ; } break ; } while ( 1 ) ; plot_int ( Col , Row , *pValue , fmt ) ; if ( num == BKABORT ) return ( -99 ) ; else if ( num == UPPER ) return ( -1 ) ; else return ( 1 ) ;}/* * 在指定位置读取长整数 * 输入输出参数说明: * Col、Row : 输入位置 I * pValue : 输入的值 I/O * Len : 输入长整数的最代长度 I * MustInput: 是否必须输入 I TRUE 是 FALSE 否 */int GetLong ( Col , Row , pValue , Len , MustInput ) int Row , Col ;long *pValue ;int Len , MustInput ;{ int num ; long OldValue ; char tmpValue [ 20 ] ; char fmt [ 20 ] ; OldValue = *pValue ; strcpy ( tmpValue , "" ) ; wblank ( Col , Row , Len ) ; sprintf ( fmt , "%c%dld" , '%' , Len ) ; writerror ( "" ) ; do { num = rdaccno ( Col , Row , tmpValue , Len ) ; FFSTD if ( num == BKABORT || num == UPPER ) break ; if ( num != QUIT && num < 0 ) continue ; if ( num == QUIT ) { if ( OldValue == 0 ) { if ( MustInput == TRUE ) { writerror ( "该项必须输入!" ) ; continue ; } else break ; } else { *pValue = OldValue ; plot_long ( Col , Row , *pValue , fmt ) ; } } else { tmpValue [ num ] = 0x00 ; *pValue = atol ( tmpValue ) ; plot_long ( Col , Row , *pValue , fmt ) ; } break ; } while ( 1 ) ; plot_long ( Col , Row , *pValue , fmt ) ; if ( num == BKABORT ) return ( -99 ) ; else if ( num == UPPER ) return ( -1 ) ; else return ( 1 ) ;}/* * 在指定位置读取一个标志型数据 * 输入输出参数说明: * Col、Row : 输入位置 I * pFlag : 输入的日期 I/O * Len : 输入字符串最大长度 I * MustInput: 是否必须输入 I TRUE 是 FALSE 否 */int GetFlag ( Col , Row , pFlag , MustInput , Value ) int Row , Col ;char *pFlag ;int MustInput ;char *Value ;{ int num ; char OldFlag [ 2 ] ; strcpy ( OldFlag , pFlag ) ; wblank ( Col , Row , 1 ) ; writerror ( "" ) ; do { num = rdaccno ( Col , Row , pFlag , 1 ) ; if ( num == BKABORT || num == UPPER ) { plot ( Col , Row , OldFlag ) ; strcpy ( pFlag , OldFlag ) ; break ; } if ( num != QUIT && num < 0 ) continue ; if ( num == QUIT ) { if ( strlen ( OldFlag ) == 0 ) { if ( MustInput == TRUE ) { writerror ( "该项必须输入!" ) ; continue ; } else break ; } else { strcpy ( pFlag , OldFlag ) ; plot ( Col , Row , OldFlag ) ; break ; } } if ( findch ( Value , pFlag [ 0 ] ) < 0 ) { writerror ( "标志不在允许范围内! 请重输 ..." ) ; continue ; } break ; } while ( 1 ) ; plot ( Col , Row , pFlag ) ; if ( num == BKABORT ) return ( -99 ) ; else if ( num == UPPER ) return ( -1 ) ; else return ( 1 ) ;}/* * 在指定位置读取Dec金额, 精确度为(14,2) * 输入输出参数说明: * Col、Row : 输入位置 I * pValue : 输入的Dec金额 I/O * MustInput: 是否必须输入 I TRUE 是 FALSE 否 */ /*int GetDecAmt ( Col , Row , pValue , MustInput ) int Row , Col ;dec_t *pValue ;int MustInput ;{ int num ; dec_t OldValue ; dec_t DecZero ; deccopy ( pValue , &OldValue ) ; wblank ( Col , Row , 14 ) ; writerror ( "" ) ; deccvasc ( "0.00" , 4 , &DecZero ) ; do { num = read_dec ( Col , Row , 14 , 2 , pValue , TRUE , FALSE , TRUE ) ; FFSTD if ( num == BKABORT || num == UPPER ) break ; if ( num != QUIT && num < 0 ) continue ; if ( num == QUIT ) { if ( deccmp ( &OldValue , &DecZero ) == 0 ) { if ( MustInput == TRUE ) { writerror ( "该项必须输入!" ) ; continue ; } else break ; } else { deccopy ( &OldValue , pValue ) ; plot_dec ( Col , Row , *pValue , "--------&.--" ) ; } } else { plot_dec ( Col , Row , *pValue , "--------&.--" ) ; } break ; } while ( 1 ) ; plot_dec ( Col , Row , *pValue , "--------&.--" ) ; if ( num == BKABORT ) return ( -99 ) ; else if ( num == UPPER ) return ( -1 ) ; else return ( 1 ) ;}*//* * 在指定位置读取Dec金额, 精确度为(14,2) * 输入输出参数说明: * Col、Row : 输入位置 I * pValue : 输入的Dec金额 I/O * MustInput: 是否必须输入 I TRUE 是 FALSE 否 */ /*int GetDecRate ( Col , Row , pValue , MustInput ) int Row , Col ;dec_t *pValue ;int MustInput ;{ int num ; dec_t OldValue ; dec_t DecZero ; deccopy ( pValue , &OldValue ) ; wblank ( Col , Row , 7 ) ; writerror ( "" ) ; deccvasc ( "0.00" , 4 , &DecZero ) ; do { num = read_dec ( Col , Row , 7 , 4 , pValue , TRUE , FALSE , TRUE ) ; FFSTD if ( num == BKABORT || num == UPPER ) break ; if ( num != QUIT && num < 0 ) continue ; if ( num == QUIT ) { if ( deccmp ( &OldValue , &DecZero ) == 0 ) { if ( MustInput == TRUE ) { writerror ( "该项必须输入!" ) ; continue ; } else break ; } else { deccopy ( &OldValue , pValue ) ; plot_dec ( Col , Row , *pValue , "-&.----" ) ; } } else { plot_dec ( Col , Row , *pValue , "-&.----" ) ; } break ; } while ( 1 ) ; plot_dec ( Col , Row , *pValue , "-&.----" ) ; if ( num == BKABORT ) return ( -99 ) ; else if ( num == UPPER ) return ( -1 ) ; else return ( 1 ) ;}*//* * 通过键入 Y 或 N 确认某件事情 * 输入输出参数说明: * Caption : 提示信息 */int Confirm ( Caption )char *Caption ;{ char CaptionStr [ 60 ] ; char ch ; sprintf ( CaptionStr , "%s [ Y/N ]" , Caption ) ; prompt ( CaptionStr ) ; do { ch = toupper ( getchar ( ) ) ; } while ( ch != 'Y' && ch != 'N' ) ; if ( ch == 'Y' ) return ( TRUE ) ; else return ( FALSE ) ;}char Choice ( Caption , Value )char *Caption ;char *Value ;{ int ch ; prompt ( Caption ) ; do { ch = getchar ( ) ; } while ( findch ( Value , ch ) < 0 ) ; return ( ch ) ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -