| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2855 人关注过本帖
标题:文本内容超长,导入的问题
只看楼主 加入收藏
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2017-8-16
结帖率:84.21%
收藏
已结贴  问题点数:20 回复次数:23 
文本内容超长,导入的问题
文本内容超长.zip (56.8 KB)
搜索更多相关主题的帖子: 文本 内容 导入 
2018-04-11 10:48
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43186
注 册:2014-5-20
收藏
得分:0 
说说文本文件的数据格式,怎样分隔出“列1”、“列2”和“列3(备注)”
2018-04-11 11:28
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2017-8-16
收藏
得分:0 
回复 楼主 lnsyzhuhua
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

2018-04-11 11:57
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2017-8-16
收藏
得分:0 
回复 2楼 吹水佬
1--234 是列1的内容
235-333  是列2的内容
334-最后  是列3的内容
2018-04-11 12:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
不明白楼主说的文本内容超长是什么意思

坚守VFP最后的阵地
2018-04-11 12:09
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2017-8-16
收藏
得分:0 
回复 5楼 sdta
vfp字符型字段最多导入254个字符,本例 达到 720
2018-04-11 12:41
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43186
注 册:2014-5-20
收藏
得分:0 
把一串截为3段,如果含有不定长双字节字符就不能随便截断。
既然用到备注字段,为何还要截断来保存?
2018-04-11 13:35
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2017-8-16
收藏
得分:0 
回复 7楼 吹水佬
先把文本导入到备注字段,在按长度分别导出这三个字段内容,能行不?
2018-04-11 14:55
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2017-8-16
收藏
得分:0 
回复 7楼 吹水佬
CLEAR
Str1 = "人发可个方和方经品他三方登1山泛水多福多寿辅导费对方01234567890"

? CutStr(str1,31)
? CutStr(31,31)

FUNCTION CutStr(cStr1,nLen1,nAdd)
LOCAL N1,cStr2

*!* 强行将参数值转换为字符串,并去掉字符串右边的空格
cStr1 = RTRIM(TRANSFORM(cStr1))

*!* 长度参数错误或者大于字符串长度,取字符串最大长度
N1 = LEN(cStr1)
nLen1 = IIF(TYPE("nLen1") # "N",N1,IIF(nLen1>N1,N1,nLen1))

*!* 截取的最后一个字符是半个双字节时,是舍去还是保留
nAdd = IIF(TYPE("nAdd") # "N",0,IIF(nAdd = 1,1,0))

if N1 > nLen1
   LOCAL i,nCount
   nCount = 0
   *!* 计算字符是双字节还是单字节,是第1位还是第2位
   FOR i=1 TO nLen1
       IF ISLEADBYTE(SUBSTR(cStr1,i,1)) = .T. &&判断双字节时计数 +1
          nCount = nCount + 1
       ENDIF
   ENDFOR

   IF ISLEADBYTE(SUBSTR(cStr1,i,1)) = .T. &&判断是不是双字节
      IF MOD(nCount,2)=0 &&判断是否双字节的第2位
         cStr2=SUBSTR(cStr1,1,nLen1)
      ELSE
         cStr2=IIF(nAdd = 0,SUBSTR(cStr1,1,nLen1-1),SUBSTR(cStr1,1,nLen1+1))
      ENDIF
   ELSE  
      cStr2=SUBSTR(cStr1,1,nLen1)
   ENDIF
ELSE
   cStr2 = cStr1   
ENDIF

RETURN cStr2
ENDFUNC
2018-04-11 14:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43186
注 册:2014-5-20
收藏
得分:0 
试试这样可否:
CLEAR
Str1 = "人发可个方和方经品他三方登1山泛水多福多寿辅导费对方01234567890"
nStart = 1
nLen = 31
DO WHILE nStart<=LEN(str1) AND nLen>0
    ? CutStr(str1, @nStart, nLen)
ENDDO

FUNCTION CutStr(cStr, nStart, nLen)
    LOCAL cRet, nCount
    nCount = 0
    FOR i=nStart TO nStart+nLen-1
        IF ISLEADBYTE(SUBSTR(cStr,i,1))
            nCount = nCount + 1
        ENDIF
    ENDFOR
    nLen = nLen + IIF(nCount%2==0,0,1)
    cRet = SUBSTR(cStr, nStart, nLen)
    nStart = nStart + LEN(cRet)
    RETURN cRet
ENDFUNC
2018-04-11 16:37
快速回复:文本内容超长,导入的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026633 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved