亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbfopen.c

?? 包含詳細例子的c#創建shape文件的開源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
    psDBF->pszHeader = (char *) pabyBuf;    fseek( psDBF->fp, 32, 0 );    if( fread( pabyBuf, nHeadLen-32, 1, psDBF->fp ) != 1 )    {        fclose( psDBF->fp );        free( pabyBuf );        free( psDBF );        return NULL;    }    psDBF->panFieldOffset = (int *) malloc(sizeof(int) * nFields);    psDBF->panFieldSize = (int *) malloc(sizeof(int) * nFields);    psDBF->panFieldDecimals = (int *) malloc(sizeof(int) * nFields);    psDBF->pachFieldType = (char *) malloc(sizeof(char) * nFields);    for( iField = 0; iField < nFields; iField++ )    {	unsigned char		*pabyFInfo;	pabyFInfo = pabyBuf+iField*32;	if( pabyFInfo[11] == 'N' || pabyFInfo[11] == 'F' || pabyFInfo[11] == 'D')	{	    psDBF->panFieldSize[iField] = pabyFInfo[16];	    psDBF->panFieldDecimals[iField] = pabyFInfo[17];	}	else	{	    psDBF->panFieldSize[iField] = pabyFInfo[16] + pabyFInfo[17]*256;	    psDBF->panFieldDecimals[iField] = 0;	}	psDBF->pachFieldType[iField] = (char) pabyFInfo[11];	if( iField == 0 )	    psDBF->panFieldOffset[iField] = 1;	else	    psDBF->panFieldOffset[iField] = 	      psDBF->panFieldOffset[iField-1] + psDBF->panFieldSize[iField-1];    }    return( psDBF );}/************************************************************************//*                              DBFClose()                              *//************************************************************************/void SHPAPI_CALLDBFClose(DBFHandle psDBF){/* -------------------------------------------------------------------- *//*      Write out header if not already written.                        *//* -------------------------------------------------------------------- */    if( psDBF->bNoHeader )        DBFWriteHeader( psDBF );    DBFFlushRecord( psDBF );/* -------------------------------------------------------------------- *//*      Update last access date, and number of records if we have	*//*	write access.                					*//* -------------------------------------------------------------------- */    if( psDBF->bUpdated )    {		unsigned char abyFileHeader[32];		struct tm *localTime;
		time_t aclock;

		fseek( psDBF->fp, 0, 0 );		fread( abyFileHeader, 32, 1, psDBF->fp );
		time( &aclock );
		localTime = localtime( &aclock );
		abyFileHeader[1] = (unsigned char)(localTime->tm_year % 100); 		abyFileHeader[2] = (unsigned char)(localTime->tm_mon+1);		abyFileHeader[3] = (unsigned char)(localTime->tm_mday);		abyFileHeader[4] = psDBF->nRecords % 256;		abyFileHeader[5] = (psDBF->nRecords/256) % 256;		abyFileHeader[6] = (psDBF->nRecords/(256*256)) % 256;		abyFileHeader[7] = (psDBF->nRecords/(256*256*256)) % 256;		fseek( psDBF->fp, 0, 0 );		fwrite( abyFileHeader, 32, 1, psDBF->fp );    }/* -------------------------------------------------------------------- *//*      Close, and free resources.                                      *//* -------------------------------------------------------------------- */    fclose( psDBF->fp );    if( psDBF->panFieldOffset != NULL )    {        free( psDBF->panFieldOffset );        free( psDBF->panFieldSize );        free( psDBF->panFieldDecimals );        free( psDBF->pachFieldType );    }    free( psDBF->pszHeader );    free( psDBF->pszCurrentRecord );    free( psDBF );}/************************************************************************//*                             DBFCreate()                              *//*                                                                      *//*      Create a new .dbf file.                                         *//************************************************************************/DBFHandle SHPAPI_CALLDBFCreate( const char * pszFilename ){    DBFHandle	psDBF;    FILE	*fp;    char	*pszFullname, *pszBasename;    int		i;/* -------------------------------------------------------------------- *//*	Compute the base (layer) name.  If there is any extension	*//*	on the passed in filename we will strip it off.			*//* -------------------------------------------------------------------- */    pszBasename = (char *) malloc(strlen(pszFilename)+5);    strcpy( pszBasename, pszFilename );    for( i = strlen(pszBasename)-1; 	 i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'	       && pszBasename[i] != '\\';	 i-- ) {}    if( pszBasename[i] == '.' )        pszBasename[i] = '\0';    pszFullname = (char *) malloc(strlen(pszBasename) + 5);    sprintf( pszFullname, "%s.dbf", pszBasename );    free( pszBasename );/* -------------------------------------------------------------------- *//*      Create the file.                                                *//* -------------------------------------------------------------------- */    fp = fopen( pszFullname, "wb" );    if( fp == NULL )        return( NULL );    fputc( 0, fp );    fclose( fp );    fp = fopen( pszFullname, "rb+" );    if( fp == NULL )        return( NULL );    free( pszFullname );/* -------------------------------------------------------------------- *//*	Create the info structure.					*//* -------------------------------------------------------------------- */    psDBF = (DBFHandle) malloc(sizeof(DBFInfo));    psDBF->fp = fp;    psDBF->nRecords = 0;    psDBF->nFields = 0;    psDBF->nRecordLength = 1;    psDBF->nHeaderLength = 33;        psDBF->panFieldOffset = NULL;    psDBF->panFieldSize = NULL;    psDBF->panFieldDecimals = NULL;    psDBF->pachFieldType = NULL;    psDBF->pszHeader = NULL;    psDBF->nCurrentRecord = -1;    psDBF->bCurrentRecordModified = FALSE;    psDBF->pszCurrentRecord = NULL;    psDBF->bNoHeader = TRUE;    return( psDBF );}/************************************************************************//*                            DBFAddField()                             *//*                                                                      *//*      Add a field to a newly created .dbf file before any records     *//*      are written.                                                    *//************************************************************************/int SHPAPI_CALLDBFAddField(DBFHandle psDBF, const char * pszFieldName,             DBFFieldType eType, int nWidth, int nDecimals ){    char	*pszFInfo;    int		i;/* -------------------------------------------------------------------- *//*      Do some checking to ensure we can add records to this file.     *//* -------------------------------------------------------------------- */    if( psDBF->nRecords > 0 )        return( -1 );    if( !psDBF->bNoHeader )        return( -1 );    if( eType != FTDouble && nDecimals != 0 )        return( -1 );    if( nWidth < 1 || nWidth > 255 )        return -1;/* -------------------------------------------------------------------- *//*      SfRealloc all the arrays larger to hold the additional field      *//*      information.                                                    *//* -------------------------------------------------------------------- */    psDBF->nFields++;    psDBF->panFieldOffset = (int *)       SfRealloc( psDBF->panFieldOffset, sizeof(int) * psDBF->nFields );    psDBF->panFieldSize = (int *)       SfRealloc( psDBF->panFieldSize, sizeof(int) * psDBF->nFields );    psDBF->panFieldDecimals = (int *)       SfRealloc( psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields );    psDBF->pachFieldType = (char *)       SfRealloc( psDBF->pachFieldType, sizeof(char) * psDBF->nFields );/* -------------------------------------------------------------------- *//*      Assign the new field information fields.                        *//* -------------------------------------------------------------------- */    psDBF->panFieldOffset[psDBF->nFields-1] = psDBF->nRecordLength;    psDBF->nRecordLength += nWidth;    psDBF->panFieldSize[psDBF->nFields-1] = nWidth;    psDBF->panFieldDecimals[psDBF->nFields-1] = nDecimals;    if( eType == FTLogical )        psDBF->pachFieldType[psDBF->nFields-1] = 'L';    else if( eType == FTString )        psDBF->pachFieldType[psDBF->nFields-1] = 'C';    else if( eType == FTDate )        psDBF->pachFieldType[psDBF->nFields-1] = 'D';    else        psDBF->pachFieldType[psDBF->nFields-1] = 'N';/* -------------------------------------------------------------------- *//*      Extend the required header information.                         *//* -------------------------------------------------------------------- */    psDBF->nHeaderLength += 32;    psDBF->bUpdated = FALSE;    psDBF->pszHeader = (char *) SfRealloc(psDBF->pszHeader,psDBF->nFields*32);    pszFInfo = psDBF->pszHeader + 32 * (psDBF->nFields-1);    for( i = 0; i < 32; i++ )        pszFInfo[i] = '\0';    if( (int) strlen(pszFieldName) < 10 )        strncpy( pszFInfo, pszFieldName, strlen(pszFieldName));    else        strncpy( pszFInfo, pszFieldName, 10);    pszFInfo[11] = psDBF->pachFieldType[psDBF->nFields-1];    if( eType == FTString )    {        pszFInfo[16] = nWidth % 256;        pszFInfo[17] = nWidth / 256;    }    else    {        pszFInfo[16] = nWidth;        pszFInfo[17] = nDecimals;    }    /* -------------------------------------------------------------------- *//*      Make the current record buffer appropriately larger.            *//* -------------------------------------------------------------------- */    psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord,					       psDBF->nRecordLength);    return( psDBF->nFields-1 );}/************************************************************************//*                          DBFReadAttribute()                          *//*                                                                      *//*      Read one of the attribute fields of a record.                   *//************************************************************************/static void *DBFReadAttribute(DBFHandle psDBF, int hEntity, int iField, char chReqType ){    int nRecordOffset;    unsigned char *pabyRec;    void *pReturnField = NULL;    static double dDoubleField;	static char fieldValue[256];  // max size for individual xbase field value is 255 chars/* -------------------------------------------------------------------- *//*      Verify selection.                                               *//* -------------------------------------------------------------------- */    if( hEntity < 0 || hEntity >= psDBF->nRecords )        return( NULL );    if( iField < 0 || iField >= psDBF->nFields )        return( NULL );/* -------------------------------------------------------------------- *//*	Have we read the record?					*//* -------------------------------------------------------------------- */	if( psDBF->nCurrentRecord != hEntity )    {		DBFFlushRecord( psDBF );		nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength;		if( fseek( psDBF->fp, nRecordOffset, 0 ) != 0 )			{				fprintf( stderr, "fseek(%d) failed on DBF file.\n", nRecordOffset );				return NULL;			}		if( fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 					1, psDBF->fp ) != 1 )			{				fprintf( stderr, "fread(%d) failed on DBF file.\n", psDBF->nRecordLength );				return NULL;			}		psDBF->nCurrentRecord = hEntity;    }    pabyRec = (unsigned char *) psDBF->pszCurrentRecord;/* -------------------------------------------------------------------- *//*	Extract the requested field.					                    *//* -------------------------------------------------------------------- */	strncpy( fieldValue, 	     ((const char *) pabyRec) + psDBF->panFieldOffset[iField],	     psDBF->panFieldSize[iField] );    fieldValue[psDBF->panFieldSize[iField]] = '\0';	pReturnField = fieldValue;/* -------------------------------------------------------------------- *//*      Decode the field.                                               *//* -------------------------------------------------------------------- */	if( chReqType == 'N' || chReqType == 'D' )    {        dDoubleField = atof(fieldValue);		pReturnField = &dDoubleField;    }/* -------------------------------------------------------------------- *//*      Should we trim white space off the string attribute value?      *//* -------------------------------------------------------------------- */#ifdef TRIM_DBF_WHITESPACE    else    {        char *pchSrc, *pchDst;

        pchSrc = fieldValue;
		// scan past leading space/tab characters
        while( isspace((int)(unsigned char)*pchSrc) )
            pchSrc++;

        // scan to null-terminating char
		pchDst = pchSrc;
		while( *pchDst != '\0' )
            pchDst++;

        // reverse scan past trailing space/tab characters
		while( pchDst != pchSrc && isspace((int)(unsigned char)*(--pchDst)) )
            *pchDst = '\0';
		pReturnField = pchSrc;		    }#endif        return( pReturnField );}/************************************************************************//*                        DBFReadIntAttribute()                         *//*                                                                      *//*      Read an integer attribute.                                      *//************************************************************************/int SHPAPI_CALL

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
老司机免费视频一区二区三区| 成人免费va视频| 精品国产乱码91久久久久久网站| 色综合中文字幕国产| 免费在线视频一区| 亚洲一区二区视频在线观看| 国产精品色在线| 久久久不卡影院| 久久伊人中文字幕| 欧美日韩国产欧美日美国产精品| 91久久精品一区二区| av亚洲精华国产精华精华| 国产电影一区二区三区| 一区二区免费在线播放| 亚洲免费大片在线观看| 久久久亚洲高清| 国产午夜精品久久久久久久| 精品视频1区2区| 欧美色国产精品| 7777精品伊人久久久大香线蕉超级流畅 | 午夜精品久久久久影视| 亚洲成人黄色影院| 视频在线观看国产精品| 日韩影院在线观看| 激情久久五月天| 国产老肥熟一区二区三区| 国产69精品久久777的优势| 极品销魂美女一区二区三区| 韩国av一区二区| 国产+成+人+亚洲欧洲自线| av一区二区不卡| 欧美日韩日日摸| 欧美r级电影在线观看| 日韩欧美你懂的| 欧美v亚洲v综合ⅴ国产v| 91精品免费观看| 精品国产1区2区3区| 国产精品久久久久久久久免费丝袜| 国产午夜精品一区二区三区嫩草| 国产精品视频在线看| 综合自拍亚洲综合图不卡区| 蜜臀久久99精品久久久久久9 | 欧美私模裸体表演在线观看| 欧美成人三级电影在线| 亚洲欧美偷拍卡通变态| 韩国av一区二区三区在线观看| 在线观看日产精品| 国产精品色在线| 国产乱子伦视频一区二区三区| 91久久香蕉国产日韩欧美9色| 2021中文字幕一区亚洲| 日本在线观看不卡视频| 91精彩视频在线| 最新日韩在线视频| 国产成a人亚洲精| 日韩美女在线视频| 日韩电影在线观看一区| 91国模大尺度私拍在线视频| 国产精品卡一卡二| 国产精品综合久久| 欧美变态凌虐bdsm| 日本va欧美va瓶| 91超碰这里只有精品国产| 亚洲午夜久久久| 99国产一区二区三精品乱码| 欧美激情在线一区二区| 国产精品 日产精品 欧美精品| 6080午夜不卡| 另类成人小视频在线| 日韩一区二区中文字幕| 日韩精品久久久久久| 欧美日韩午夜影院| 视频在线在亚洲| 91麻豆精品国产91久久久| 亚洲bdsm女犯bdsm网站| 欧美日韩一卡二卡| 日日欢夜夜爽一区| 欧美一区二区三区爱爱| 麻豆精品视频在线观看| 欧美电影免费观看高清完整版在| 经典三级视频一区| 国产色综合一区| 成人美女视频在线观看18| 国产精品电影一区二区| 欧洲激情一区二区| 日日骚欧美日韩| 精品99一区二区三区| 国产成人亚洲精品青草天美| 中文字幕乱码久久午夜不卡| 99久久伊人久久99| 一区二区三区在线观看视频| 精品视频999| 天堂影院一区二区| 欧美一级高清大全免费观看| 国内精品在线播放| 国产精品久久久久久久久久久免费看| hitomi一区二区三区精品| 亚洲蜜桃精久久久久久久| 欧美日韩视频一区二区| 国产在线精品不卡| 国产精品久久午夜夜伦鲁鲁| 欧美色精品在线视频| 国产在线播放一区二区三区| 欧美高清在线一区| 欧美羞羞免费网站| 韩国成人在线视频| 亚洲精品国产视频| 久久亚洲私人国产精品va媚药| 成人丝袜高跟foot| 日本欧美一区二区三区| 欧美国产禁国产网站cc| 欧美日韩一区二区在线观看 | 午夜av区久久| 日本一二三四高清不卡| 91精品在线免费| 一本到三区不卡视频| 久久99在线观看| 亚洲精品v日韩精品| 欧美精品一区二区三区蜜臀| 色婷婷综合久久| 国产精品综合一区二区| 免费三级欧美电影| 一级精品视频在线观看宜春院| 国产午夜精品久久久久久久| 欧美二区在线观看| 在线免费一区三区| 成人三级在线视频| 精品一区二区三区影院在线午夜 | 日韩码欧中文字| 久久精品一二三| 日韩一区二区三区观看| 91高清视频在线| 波多野结衣在线aⅴ中文字幕不卡| 三级久久三级久久| 一区二区欧美国产| **性色生活片久久毛片| 久久久精品tv| 久久久久99精品一区| 91精品国产乱码| 91女神在线视频| 92国产精品观看| 成人免费视频免费观看| 国产精华液一区二区三区| 狠狠色综合日日| 精品一区二区三区在线视频| 麻豆国产精品官网| 日本成人在线一区| 日韩精品乱码免费| 日韩av在线发布| 青青草97国产精品免费观看无弹窗版 | 国产精品麻豆久久久| 久久久美女毛片| 国产亚洲欧美一区在线观看| 国产午夜亚洲精品午夜鲁丝片| 日韩免费性生活视频播放| 欧美α欧美αv大片| 久久综合精品国产一区二区三区 | 亚洲婷婷国产精品电影人久久| 国产精品视频看| 亚洲欧美综合另类在线卡通| 亚洲日本一区二区三区| 伊人夜夜躁av伊人久久| 亚洲一卡二卡三卡四卡 | 国产一区二区三区在线观看精品| 国产乱国产乱300精品| av亚洲精华国产精华精| 色综合天天做天天爱| 欧美日韩亚洲另类| 26uuu久久综合| 国产午夜精品一区二区三区视频| 专区另类欧美日韩| 日韩av一二三| 国产高清久久久久| 91在线免费视频观看| 欧美日韩视频在线一区二区| 日韩午夜精品视频| 国产精品女人毛片| 亚洲国产精品一区二区www| 蜜臀99久久精品久久久久久软件| 国产福利一区二区三区视频在线| 粉嫩av一区二区三区在线播放| 欧美综合亚洲图片综合区| 日韩一级黄色片| 亚洲色图另类专区| 麻豆精品视频在线观看免费 | 亚洲一区二区欧美| 精品一区二区影视| 在线观看欧美日本| 2022国产精品视频| 亚洲va韩国va欧美va精品| 国产成人一区在线| 在线播放中文字幕一区| 国产精品少妇自拍| 久久99久久久久| 在线看日本不卡| 国产精品国产馆在线真实露脸| 青草国产精品久久久久久| 91色在线porny| 久久久久久夜精品精品免费| 亚洲午夜视频在线观看|