| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
雷速体育发帖软件开发QQ118000023C语言培训|一对一辅导|零基础学编程LightningChart 快速先进的.Net图表控件
共有 545 人关注过本帖
标题:文本内容超长,导入的问题
只看楼主 收藏
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2017-8-16
结帖率:100%
  已结贴   问题点数:20  回复次数:23   
文本内容超长,导入的问题
附件: 您没有浏览附件的权限,请 登录注册
2018-04-11 10:48
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:145
帖 子:5929
专家分:25869
注 册:2014-5-20
  得分:0 
说说文本文件的数据格式,怎样分隔出“列1”、“列2”和“列3(备注)”
2018-04-11 11:28
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2017-8-16
  得分:0 
回复 楼主 lnsyzhuhua

附件: 您没有浏览附件的权限,请 登录注册
2018-04-11 11:57
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:27
专家分: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
等 级:版主
威 望:164
帖 子:7113
专家分:16723
注 册:2012-2-5
  得分:0 
不明白楼主说的文本内容超长是什么意思
2018-04-11 12:09
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2017-8-16
  得分:0 
回复 5楼 sdta
vfp字符型字段最多导入254个字符,本例 达到 720
2018-04-11 12:41
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:145
帖 子:5929
专家分:25869
注 册:2014-5-20
  得分:0 
把一串截为3段,如果含有不定长双字节字符就不能随便截断。
既然用到备注字段,为何还要截断来保存?
2018-04-11 13:35
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2017-8-16
  得分:0 
回复 7楼 吹水佬
先把文本导入到备注字段,在按长度分别导出这三个字段内容,能行不?
2018-04-11 14:55
lnsyzhuhua
Rank: 1
等 级:新手上路
帖 子:27
专家分: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:145
帖 子:5929
专家分:25869
注 册: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.041023 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved