标题:请教:如何批量将子目录内的所有SCX和VCX全都自动转换成prg?
取消只看楼主
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
结帖率:100%
 问题点数:0 回复次数:5 
请教:如何批量将子目录内的所有SCX和VCX全都自动转换成prg?
在“类浏览器”中,打开某个可视类库或表单,点击“查看代码”,会得到一个“Viewcode.prg”,这“Viewcode.prg”是哪个工具生成的?有办法批处理吗?

其实,主要目的并非为了运行或编译,而是为了更方便地、全局地查阅目录内的一切代码,以便Debug。
先将一切东东转换为prg,然后再——

copy  *.prg  allprg.txt

接下来,只需仔细地检查这一个allprg.txt就好了,而不必分别去打开一大堆的prg、scx、vcx文件,搞得人头晕发狂消化不良大小便失禁……啥的。
搜索更多相关主题的帖子: 转换 prg 子目录 批量 自动 
2022-11-21 18:17
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
太感谢吹版啦!!!



以下是引用吹水佬在2022-11-21 22:01:25的发言:

看看这个有无帮助

2022-11-22 09:20
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
东转西转的,总算定位到函数:
FUNCTION brwExportClass(toBrowser,tlShow,tcExportToFile)
代码有些长,看得有些头大,好像当中有很多变量形如“tcXXXXXX”,似乎是全局变量,一下子可能外人还没法直接调用此函数。
实在不行自己写一个简陋版scx2txt吧,可能更容易一些。

2022-11-22 10:27
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
算了,这问题若知其然,则很简单。我老人家自己随手写一个,将就着用吧。

****************************
* __VfpAllCode2Txt__.prg
* 功能:将当前目录下的所有源码,全部打包至AllCode.txt
* 包括:*.h *.mpr *.prg *.SCX *.VCX 和 *.DBC *
****************************

clear all
close all
set safe off
on error do DoNothing

lMyself = PROGRAM()
lPathName = JUSTPATH(sys(16))
PathName = ADDBS(lPathName)
lFileName = ""
lcAllText = "*-----------" + 0h0D0A
lCRLF = 0h0D0A + "*-----------" + 0h0D0A
SET DEFAULT TO (lPathName)
SET PATH TO (lPathName)

*--------H--------
EXTENNAME = '*.h'
FILENUM = Adir(NAMEARRAY, EXTENNAME)
FOR NCOUNT = 1 TO FILENUM
    lFileName = (PATHNAME) + NAMEARRAY(NCOUNT,1)
    lprg = FileToStr(lFileName)
    lcAllText = lcAllText + "* " + lFileName + lCRLF + lprg + lCRLF
ENDFOR NCOUNT

*--------Mpr--------
EXTENNAME = '*.mpr'
FILENUM = Adir(NAMEARRAY, EXTENNAME)
FOR NCOUNT = 1 TO FILENUM
    lFileName = (PATHNAME) + NAMEARRAY(NCOUNT,1)
    lprg = FileToStr(lFileName)
    lcAllText = lcAllText + "* " + lFileName + lCRLF + lprg + lCRLF
ENDFOR NCOUNT

*--------Prg--------
EXTENNAME = '*.prg'
FILENUM = Adir(NAMEARRAY, EXTENNAME)
FOR NCOUNT = 1 TO FILENUM
    if upper(JUSTSTEM(NAMEARRAY(NCOUNT,1))) == upper(lMyself)
        loop
    endif
    lFileName = (PATHNAME) + NAMEARRAY(NCOUNT,1)
    lprg = FileToStr(lFileName)
    lcAllText = lcAllText + "* " + lFileName + lCRLF + lprg + lCRLF
ENDFOR NCOUNT

*---------Form--------
EXTENNAME = '*.SCX'
FILENUM = Adir(NAMEARRAY, EXTENNAME)
FOR NCOUNT = 1 TO FILENUM
    lFileName = (PATHNAME) + NAMEARRAY(NCOUNT,1)
*    COMPILE FORM (lFileName)
    use (lFileName)
    pack
    scan
        lobjname = objname
        lMethods = Methods
        if ! EMPTY(lMethods)
            lcAllText = lcAllText + "* " + lFileName + " : " + lobjname + lCRLF + lMethods + lCRLF
        endif
    endscan
ENDFOR NCOUNT

*--------Visual Class--------
EXTENNAME = '*.VCX'
FILENUM = Adir(NAMEARRAY, EXTENNAME)
FOR NCOUNT = 1 TO FILENUM
    lFileName = (PATHNAME) + NAMEARRAY(NCOUNT,1)
*    COMPILE CLASSLIB (lFileName)
    use (lFileName)
    pack
    scan
        lobjname = objname
        lMethods = Methods
        if ! EMPTY(lMethods)
            lcAllText = lcAllText + "* " + lFileName + " : " + lobjname + lCRLF + lMethods + lCRLF
        endif
    endscan
ENDFOR NCOUNT

*--------DBC--------
EXTENNAME = '*.DBC'
FILENUM = Adir(NAMEARRAY, EXTENNAME)
FOR NCOUNT = 1 TO FILENUM
    lFileName = (PATHNAME) + NAMEARRAY(NCOUNT,1)
*    COMPILE DATABASE (lFileName)
    use (lFileName)
    pack
    locate for objectName = 'StoredProceduresSource'
    lMethods = code
    if ! EMPTY(lMethods)
        lcAllText = lcAllText + "* " + lFileName + lCRLF + lMethods + lCRLF
    endif
ENDFOR NCOUNT

strToFile(lcAllText, 'AllCode.txt')
CLOSE ALL
CLEAR ALL
*QUIT

PROCEDURE DoNothing
return
2022-11-23 15:21
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
以下是引用sam_jiang在2022-11-23 18:09:02的发言:

你只是把里面的方法全提出来吧?并不是转化成prg文件。


我的要求很卑微——仅仅是想一股脑儿打包成TXT,以方便自己Debug;而不是为了转化成prg来成功运行。
2022-11-23 18:14
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
以下是引用sam_jiang在2022-11-24 07:28:32的发言:

你这叫半途而废,或者说是始乱终弃


这个……那个……兄台批评得极是。
主要是ScxVcx2Prg源码太长啦,东拐西拐的没耐心细读,只好退而求其次也。
这也就相当于,当年徐志摩苦追林徽因终不可得,遂一扭头,一咬牙,将朋友妻陆小曼轻轻拿下;无论如何,大丈夫须当有妻,万万不可学金岳霖当一辈子的光棍痴汉。
就是这个一理儿吧,我说。
2022-11-24 10:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510727-1-1.html




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

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