| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2590 人关注过本帖, 1 人收藏
标题:VFP:多行注释的尴尬!
只看楼主 加入收藏
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:350
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用my2318在2022-4-26 22:20:43的发言:
选中要注释的内容,用菜单里的注释命令加注释符号,选中注释用菜单的反注释解除注释不好吗?

确实不太习惯每一行都加注释符*!*
嗯……怎么说呢,多行注释后的代码,随时仍可能会编辑、随时恢复运行的,万一误碰到*!*,比如不小心将某一行首改成了*!,后果就难以预料啦。
2022-04-26 23:24
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
拿现在的使用习惯去要求十多年前的软件产品,当然会觉得有许多不满意的。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2022-04-27 08:03
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:703
专家分:2780
注 册:2018-3-13
收藏(1)
得分:0 
选中多行,Ctrl+O+M 注释,Ctrl+O+N 反注释,没觉得什么不方便的,习惯就好

这家伙很懒,啥也没留下
2022-04-27 13:56
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:350
专家分:330
注 册:2013-10-4
收藏
得分:0 
确实只是一个习惯问题,呵呵,习惯就好!

随便拿一段吹版的代码做例子:

* ----------源程序--------------
FUNCTION load_data(filename)
    IF !FILE(filename)
        RETURN 0
    ENDIF
    LOCAL fp, ptr
    fp = myFOpen(filename, "rb")
    IF  fp == 0
        RETURN 0
    ENDIF
    head = 0
    last = 0
    IF apiFRead(pBuffer,bufSize,1,fp) == 1
        head = dt.create()
        apiMemcpy_s(head, bufSize, pBuffer, bufSize)
        dt.setValue("next", 0, head)
        last = head
    ENDIF
    DO WHILE apiFRead(pBuffer,bufSize,1,fp) == 1
        ptr = dt.create()
        apiMemcpy_s(ptr, bufSize, pBuffer, bufSize)
        dt.setValue("next", 0, ptr)
        dt.setValue("next", ptr, last)
        last = ptr
    ENDDO
    apiFClose(fp)
    RETURN head
ENDFUNC

* ----------临时注释掉一段程序--------------
FUNCTION load_data(filename)
    IF !FILE(filename)
        RETURN 0
    ENDIF
    LOCAL fp, ptr
    fp = myFOpen(filename, "rb")
    IF  fp == 0
        RETURN 0
    ENDIF
    head = 0
    last = 0
    IF apiFRead(pBuffer,bufSize,1,fp) == 1
        head = dt.create()
        apiMemcpy_s(head, bufSize, pBuffer, bufSize)
        dt.setValue("next", 0, head)
        last = head
    ENDIF
#if .f. &&-------------暂时跳过以下循环-------------
    DO WHILE apiFRead(pBuffer,bufSize,1,fp) == 1
        ptr = dt.create()
        apiMemcpy_s(ptr, bufSize, pBuffer, bufSize)
        dt.setValue("next", 0, ptr)
        dt.setValue("next", ptr, last)
        last = ptr
    ENDDO
#endif .f. &&-------------暂时跳过以上循环-------------
    apiFClose(fp)
    RETURN head
ENDFUNC

* ------------------------------------------------
* 若随时想要取消注释,只需将#if .f. 和#endif .f.这两行的行首#换成*即可
* 亲,不香吗?
* ------------------------------------------------
2022-04-27 16:15
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:350
专家分:330
注 册:2013-10-4
收藏
得分:0 
其实还有最尴尬的一点:

VFP的代码编辑器已是十几年前的了,并不好用,甚至可以说很不友好,除了一些表单与可视化类库,我极少在IDE中写代码,一般会用Editplus、EmEditor、UltraEdit之类写prg,甚至表单和类库都在EP、EM、UE中写局部代码——因VFP没法进行版本跟踪比较,想汇总比较一下Ver 2.03与Ver 2.02的代码差异,还得统统转化为纯文本文件,用最原始的文本比较工具,如UltraCompare之类来作对比,作统计。

你让我在Editplus中,怎么方便地添加多行注释?——那肯定是类C风格的多行注释最方便啦!亲。
2022-05-01 07:51
talkrobin
Rank: 2
等 级:论坛游民
帖 子:38
专家分:19
注 册:2022-5-15
收藏
得分:0 
注释方法 的分享非常不错,感谢
2022-05-15 10:57
foxfans
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:113
专家分:324
注 册:2021-10-23
收藏
得分:0 
方法多种多样,符合规则即可,以下代码会影响运行效率。

#DEFINE _s text to _nop noshow
#DEFINE _o endtext

_s
 sss
 ssdfds
 dsfs
_o


FOR i=1 TO 10
?i
ENDFOR

_s
随便写点东西吧
*!*.sdf.sdfsdfsd
'sdfasdlfjldsajfadslf
_ssdaf;dsflfsad
sdafs
&&
_o

FOR i=1 TO 5
 ?TRANSFORM(i)
ENDFOR

[此贴子已经被作者于2022-5-15 14:31编辑过]

2022-05-15 14:22
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:350
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用foxfans在2022-5-15 14:22:22的发言:
方法多种多样,符合规则即可,以下代码会影响运行效率。
#DEFINE _s text to _nop noshow
#DEFINE _o endtext

_s
 sss
 ssdfds
 dsfs
_o
...


还挺有趣的!
不过有些尴尬的是:
1、自定义的“_s / _o”,别人一眼看不懂;
2、有没考虑过,若真这么干的话,就必须在每一个文件头都得添加#DEFINE或#INCLUDE,难道,你不嫌麻烦么?
呵呵。

单就代码简洁优雅方面考量,个人感觉,吹版的建议最佳!

#if .f.
   *--------------
   巴拉巴拉
   叽哩呱啦
   阿吱阿咗
   九唔搭八
   ……
   *--------------
#endif .f.
2022-05-15 17:29
foxfans
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:113
专家分:324
注 册:2021-10-23
收藏
得分:0 
主程序加一个即可,其它地方要引用,可以做个文件来#include包含进去,也没什么难的。 用自带的右键选中还是最方便。
只能怪Vfp没有后续更新,新的特性IDE不支持。
#if 0
#endif 0
如果支持另外的宏定义 把 #if 0 定成/* 另一个为 */也许就类似HTML语法,不过也没啥必要。

[此贴子已经被作者于2022-5-15 19:50编辑过]

2022-05-15 19:08
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1088
专家分:2682
注 册:2015-12-30
收藏
得分:0 
没想到一个注释会有这些纠结
*/&&做单行注释
if .f.//endif多行注释,需要的时候把.f.改成.t.即可
如果是两段代码做比较if .f./else/endif正好可以满足要求
这样不香吗?
2022-05-15 20:12
快速回复:VFP:多行注释的尴尬!
数据加载中...
 
   



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

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