| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1136 人关注过本帖
标题:关于TXT文档内容到DBF表的代码求助
只看楼主 加入收藏
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:331
专家分:776
注 册:2014-6-12
收藏
得分:0 
以下是引用wengjl在2025-4-27 15:15:34的发言:

对WORD加密,通过创建对象,打开WORD再读取,就正常,所以,想到是否也可用创建一个能打开记事本的对象来处理,不知是否可行

绝对不行,word文档怎么能用记事本打开呢?你想想:MP4电影用记事本打开能到到图片吗?
3 天前 17:56
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1995
专家分:3961
注 册:2012-2-29
收藏
得分:8 
回复 楼主 wengjl
试一试下面的代码,可否输出正常的字符串?
程序代码:
clear
local i, h
local array wplines[10]  &&  仅列举前10行
h = fopen("test.txt")
for i = 1 to alen(wplines)
    wplines[i] = fgets(h)
endfor

hzs = alen(wplines)
for i = 1 to hzs
    ? i,wplines[i]
endfor
fclose(h)



[此贴子已经被作者于2025-4-28 08:29编辑过]

前天 08:27
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2298
专家分:4114
注 册:2007-4-27
收藏
得分:0 
首先感谢各位的参与,谢谢!
加密是第三方提供的,所以,根本不知道加密与解密的原理,看到现象是:
一个办公文档(如EXCEL文档、WORD文档、TXT文档)在电脑上操作与不装加密软件的电脑上操作是一样的,但拷贝到家中的电脑上打开就是乱码一片。
从论坛上下载下来一个TXT文档(如:“123.TXT”),只要不去作打开保存的操作,是不会被加密的。那么,

cfile=filetostr("123.txt")
  
? cfile 观察,在VF窗口看到的内容是正常的
如果 打开保存操作过后,则文档就被加密了,再
cfile=filetostr("123.txt")  
? cfile 观察,在VF窗口看的内容是一片乱码了!

也就是说,保存过后的文档,就不能用 文件到字符 的函数来解决了!

于是,想到一个,像 EXCEL TO DBF 那样的方法:即VF代码创建一个EXCEL对象,用对象打开EXCEL表,再读取EXCEL到DBF那样。
提问就是想要这样一个方法的代码,即 用VF代码创建一个X对象,用这个对象能打开“123.TXT”文件,再全选 - 复制 - 粘贴 到 变量或数组后,最后进入到 DBF 表中。

烦请高手提供帮助,我好学到一种技术!谢谢!

只求每天有一丁点儿的进步就可以了
前天 08:31
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:783
专家分:3078
注 册:2018-3-13
收藏
得分:0 
右击加密后的 txt,打开方式 > 写字板,如果写字板能正常显示,也许就能用 RichText 对象来读写
只能说也许,说不定加密方式是采用 hook 进程名而不是控件的 ProgId

这家伙很懒,啥也没留下
前天 09:57
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:1001
专家分:5018
注 册:2013-2-16
收藏
得分:0 
这样提问解决不了问题,我出个主意,你在这里提供两份txt文件。
文件1.txt,未加密过的,  内容为:
abc...z(回车)
123...9(回车)
ABC...Z(回车)
文件2. (文件1在你公司电脑上保存后的样子)
两份文件都传上来,说不定有高手可以破。
前天 11:04
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2298
专家分:4114
注 册:2007-4-27
收藏
得分:0 
以下是引用厨师王德榜在2025-4-28 11:04:05的发言:

这样提问解决不了问题,我出个主意,你在这里提供两份txt文件。
文件1.txt,未加密过的,  内容为:
abc...z(回车)
123...9(回车)
ABC...Z(回车)
文件2. (文件1在你公司电脑上保存后的样子)
两份文件都传上来,说不定有高手可以破。


加密TF对照.rar (631 Bytes)

二份文件制作好了

供高手测试

只求每天有一丁点儿的进步就可以了
前天 12:43
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2298
专家分:4114
注 册:2007-4-27
收藏
得分:0 
我需要的,不是破解,是VF创建对象、打开、读取的方法。

不过能破解,也是一个好玩的东东!

只求每天有一丁点儿的进步就可以了
前天 12:46
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:1001
专家分:5018
注 册:2013-2-16
收藏
得分:52 
猜测你要的是这个:
程序代码:
* 打开记事本并加载文件(异步模式,不等待)
lcFile = "C:\Intel\调用clssqlite33示例.txt"  && 要打开的文件全路径名称
winTitle = JUSTSTEM(lcFile)  + " - 记事本"   && 推算出的窗口标题
* 创建 WScript.Shell 对象
loShell = CREATEOBJECT("WScript.Shell")
loShell.Run('notepad.exe "' + lcFile + '"', 1, .F.)  && WScript.Shell 对象打开记事本

* 等待记事本窗口启动(关键延迟)
= INKEY(1)  && 延迟1秒,确保窗口加载完成

* 激活记事本窗口(通过窗口标题匹配)
llActivated = loShell.AppActivate(winTitle)
IF NOT llActivated
    MESSAGEBOX("无法激活记事本窗口!")
    RETURN
ENDIF

* 通过发送(Ctrl[color=#808080]+A)和(Ctrl+C),取得记事本内容到剪贴板[/color]
loShell.SendKeys("^a")  && Ctrl+A
= INKEY(0.2)           && 等待200毫秒确保全选完成
loShell.SendKeys("^c")  && Ctrl+C
= INKEY(0.5)           && 等待500毫秒确保复制完成

* 关闭记事本
loShell.SendKeys("%{F4}")  && Alt+F4 关闭窗口
= INKEY(0.5)

* 释放对象
RELEASE loShell

* 验证剪贴板内容
IF !EMPTY(_CLIPTEXT)
    IF MESSAGEBOX("内容已复制到剪贴板,是否输出到屏?" ,4,"读取记事本成功。") = 6
        CLEAR 
        nn = ALINES(arrtxt, _CLIPTEXT, 2, CHR(13))
        FOR ir = 1 TO nn
            * 记事本内容输出到屏,也可改为append到一个事先准备好的表中
            ? STR(ir) + "|" + arrtxt[ir] 
        ENDFOR  
    ENDIF 
ELSE
    MESSAGEBOX("复制失败!")
ENDIF
前天 14:23
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:1001
专家分:5018
注 册:2013-2-16
收藏
得分:0 
运行效果:
图片附件: 游客没有浏览图片的权限,请 登录注册
前天 14:26
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2298
专家分:4114
注 册:2007-4-27
收藏
得分:0 
以下是引用厨师王德榜在2025-4-28 14:23:17的发言:

猜测你要的是这个:
* 打开记事本并加载文件(异步模式,不等待)
lcFile = "C:\Intel\调用clssqlite33示例.txt"  && 要打开的文件全路径名称
winTitle = JUSTSTEM(lcFile)  + " - 记事本"   && 推算出的窗口标题
* 创建 WScript.Shell 对象
loShell = CREATEOBJECT("WScript.Shell")
loShell.Run('notepad.exe "' + lcFile + '"', 1, .F.)  && WScript.Shell 对象打开记事本

* 等待记事本窗口启动(关键延迟)
= INKEY(1)  && 延迟1秒,确保窗口加载完成

* 激活记事本窗口(通过窗口标题匹配)
llActivated = loShell.AppActivate(winTitle)
IF NOT llActivated
    MESSAGEBOX("无法激活记事本窗口!")
    RETURN
ENDIF

* 通过发送(Ctrl+A)和(Ctrl+C),取得记事本内容到剪贴板
loShell.SendKeys("^a")  && Ctrl+A
= INKEY(0.2)           && 等待200毫秒确保全选完成
loShell.SendKeys("^c")  && Ctrl+C
= INKEY(0.5)           && 等待500毫秒确保复制完成

* 关闭记事本
loShell.SendKeys("%{F4}")  && Alt+F4 关闭窗口
= INKEY(0.5)

* 释放对象
RELEASE loShell

* 验证剪贴板内容
IF !EMPTY(_CLIPTEXT)
    IF MESSAGEBOX("内容已复制到剪贴板,是否输出到屏?" ,4,"读取记事本成功。") = 6
        CLEAR
        nn = ALINES(arrtxt, _CLIPTEXT, 2, CHR(13))
        FOR ir = 1 TO nn
            * 记事本内容输出到屏,也可改为append到一个事先准备好的表中
            ? STR(ir) + "|" + arrtxt[ir]
        ENDFOR  
    ENDIF
ELSE
    MESSAGEBOX("复制失败!")
ENDIF

正是需要的,非常感谢!

只求每天有一丁点儿的进步就可以了
前天 14:46
快速回复:关于TXT文档内容到DBF表的代码求助
数据加载中...
 
   



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

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