|
|
导航: |
论坛 -> 开源项目
斑竹:joki,ralf_jones |
|
作者: |
|
2020/1/12 19:00:26 |
标题: |
|
加入我的收藏 |
楼主: |
05年用 DELPHI 做的一个聊天软件。后来再也没维护,没时间搞它。 最近有一些新的想法,想功能上做一点更新,也想移植到手机上。之前的 DELPHI 代码,用了很多第三方控件,在新版的 DELPHI 上面,多半连编译也是通不过的,更不用说需要移植到 FireMonkey 上。而且有些功能,使用了 Windows 系统的功能,比如视频聊天用到 DirectShow。
另外,很多年没搞它,我自己都忘记了一些细节。所以我打算什么功能都不改,而且要简化掉一些功能,先用新版的 Delphi FireMonkey 重写一遍,新写的能够运行了,再来改,可能连通讯协议都要改。
因此,我把它安装起来,先自己用用,然后呢,让新写的可以和之前的老版本兼容,这样的代码重构,才可以一点一点地改出来,避免一下搞很多修改还不知道能不能正常工作。
因此,我重新发布了服务器端。然后,客户端发在这里,有兴趣的可以下载客户端,然后安装后试用。10多年前的代码,界面比较土,大家容忍一下。
待我用新版的 FireMonkey 重构完代码后,就开源出来。
所以呢,这里就是提供给大家试用,有兴趣的,请回帖给我重构然后开源的动力。
本贴附件,是客户端。安装以后,在选项菜单里面,把服务器设置为:154.222.1.190 就可以注册,登录,添加好友等等。
--- 功能介绍 --- 1. 通讯架构:基于 UDP 的 P2P 通讯。有 NAT 打洞的功能; 1.1. 在 UDP 基础上模拟 TCP 算法保证 UDP 的丢包重传,模拟了 TCP 的连接。 1.3. 在上述基础上,搞了一个基于 UDP 的 WebService 的函数调用框架,修改自 Delphi 本身的 WebService 框架。
2. 富文本的打字聊天。自己写的基于 IE 的富文本编辑器。可以图文混排,随意修改文字的字体大小颜色等等,可以随意插入图片。 2.1. 文字的传输是加密的。本身P2P的通讯也是端到端的,不从服务器过。加密用的 Key 是每次聊天建立时双方协商的,因此 KEY 是什么,没法预测。 2.2. 加密采用的是 LockBox 那套控件。
3. 音频聊天;
4. 多方视频会议。
5. 电子白板。一个聊天会议窗口里面的多个白板。参与者都可以在上面贴图画图。
6. 文件传输,自动断点续传。 6.1. 文件夹共享给对方,让对方自己选择下载什么文件,类似把自己当作 FTP SERVER,对方当作 FTP CLIENT 的玩法。当然这里仍然是基于 UDP 的。
7. 还有一些乱七八糟花了不少时间的功能,似乎也没太多使用价值。
---- 新版的第一阶段修改的想法 --------- 1. 首先,去掉这个富文本编辑。只是单纯的文字。因为之前那个是基于IE的,在手机端是不可能正常工作的。
2. 语音对讲也暂时去掉。因为之前的语音是基于 WINDOWS 的 API 的。
3. 视频也要去掉,因为之前的视频是基于 DirectShow 的。
在暂时把基本通讯框架搭起来后,能够文字聊天的情况下,再逐渐增加一些功能,如果开源,希望大家一起帮忙。每天要上班挣饭钱,没太多时间研究新技术了。这次考虑开源,也是因为 Delphi 有社区版,大家可以玩玩正版。为了将来的兼容性,因此新版不用闭源的第三方控件。
最后,试用的同学,有兴趣的可以在这个软件里面添加好友 pcplayer,通过这个软件可以和我交流。
----------------------------------------------
- |
作者: |
akay (akay) |
★☆☆☆☆ |
-
|
普通会员 |
|
2020/1/12 19:56:33 |
1楼: |
支持,支持!
----------------------------------------------
-
|
作者: |
|
2020/1/12 22:14:18 |
2楼: |
支持!!
----------------------------------------------
-
|
作者: |
|
2020/1/12 23:44:44 |
3楼: |
建议开一个群收集意见,这样互动性也更强一些。 而且做FMX是否有必要?毕竟是一件没有收益的事情。 把手里的VCL完善就行,就当是给小白们的礼物,应该还是可以学到很多东西的。 或者也可以这样,FMX继续开发,但FMX版收钱!
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2020/1/12 23:53:04 |
4楼: |
楼上的,VCL 的,要做的工作主要是把 D7 的代码,升级到最新版 DELPHI。 另外就是一些第三方控件要去掉,否则依赖第三方闭源的控件就不好玩了。
但 VCL 的,不支持手机。现在这个时代,支持手机也很重要。所以想搞 FMX 的。
可以考虑 PC 版功能更多,手机版简化一些。总体来说,要一套代码兼容。因此还是需要用 FMX。
至于说收益,开源了,就不考虑收益了。当作是为 Delphi 世界做点贡献。
----------------------------------------------
-
|
作者: |
|
2020/1/13 0:39:32 |
5楼: |
那就期待你的大作了,我提前预定捐款200元,一点小意思哈~
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
hbug (hbug) |
★☆☆☆☆ |
-
|
普通会员 |
|
2020/1/13 8:01:52 |
6楼: |
期待中。。。。
----------------------------------------------
专业提供人力资源软件、指纹考勤软件、POS进销存软件、酒店餐饮软件 http://www.winsoftcn.com
|
作者: |
|
2020/1/13 8:50:02 |
7楼: |
强烈支持---
----------------------------------------------
-
|
作者: |
|
2020/1/13 9:07:36 |
8楼: |
支持支持!
----------------------------------------------
虽千万人吾往矣!
|
作者: |
|
2020/1/13 9:25:30 |
9楼: |
强烈支持
----------------------------------------------
-
|
作者: |
|
2020/1/13 10:05:27 |
10楼: |
能不能让大家凑点热闹 参与一下哈
----------------------------------------------
哦哟喂,看过来: http://zelig.cn
|
作者: |
|
2020/1/13 10:15:56 |
11楼: |
开个群吧。
----------------------------------------------
-我爱Delphi6
|
作者: |
|
2020/1/13 10:28:29 |
12楼: |
强烈支持,期待。。。。。。
----------------------------------------------
-
|
作者: |
|
2020/1/13 11:08:52 |
14楼: |
11 楼,开群就算了。我平常不开QQ,要开 QQ 还要开虚拟机。如果有兴趣,下载我那个客户端装上,改一下服务器设置,添加好友 pcplayer 就可以联系了。
----------------------------------------------
-
|
作者: |
|
2020/1/13 13:50:33 |
15楼: |
强烈支持,期待
----------------------------------------------
-
|
作者: |
|
2020/1/13 14:31:03 |
16楼: |
强烈支持,期待
----------------------------------------------
-
|
作者: |
hans (hans) |
★☆☆☆☆ |
-
|
普通会员 |
|
2020/1/13 17:43:42 |
17楼: |
嗯,这个支持
----------------------------------------------
Hans
|
作者: |
|
2020/1/13 18:29:36 |
18楼: |
服务器连接不了
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
|
作者: |
majx (skin) |
★☆☆☆☆ |
-
|
普通会员 |
|
2020/1/13 19:31:48 |
19楼: |
感谢!!!希望有更多的DELPHI软件能开源,大力促进DELPHI生态的发展!!!在盒子上专门建立一个开源版块,供大家互相学习。
----------------------------------------------
majx,QQ 613354940
|
作者: |
majx (skin) |
★☆☆☆☆ |
-
|
普通会员 |
|
2020/1/13 19:41:14 |
20楼: |
360真是个畜生,DELPHI开发的一下载就报病毒。
----------------------------------------------
majx,QQ 613354940
|
作者: |
|
2020/1/13 20:19:02 |
22楼: |
@letianwuji 服务器能够连接。我刚刚登录过。
向服务器注册和登录,是 Delphi 的 WebService,已知的问题,在 WIN XP 不存在,在 WIN8 存在的问题是,这个 WebService 的调用,可能是:
D7 做的 WebServices 客户端,用 HttpRIO 去访问 WebServices 服务器端的时候,会出 AV 错误。
点"我的电脑"右键"属性""高级""性能""设置"。把"数据执行保护"关掉。然后就可以了。
----------------------------------------------
-
|
作者: |
myid (林锋) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2020/1/13 20:29:46 |
23楼: |
支持,期待
----------------------------------------------
-
|
作者: |
|
2020/1/13 21:37:30 |
24楼: |
支持
----------------------------------------------
一路风雨走过,因为有你们
|
作者: |
|
2020/1/13 22:04:56 |
25楼: |
支持!
----------------------------------------------
-
|
作者: |
|
2020/1/14 11:54:47 |
26楼: |
强烈支持,世上还是有好人!
----------------------------------------------
-
|
作者: |
|
2020/1/14 12:38:28 |
27楼: |
支持楼主,如果有需要,我可以把自己写的富文本编辑控件移植到fmx下,免费开源。
----------------------------------------------
18114532@qq.com
|
作者: |
|
2020/1/14 14:21:42 |
28楼: |
支持,建议放到github
----------------------------------------------
-
|
作者: |
|
2020/1/14 17:03:17 |
29楼: |
@abcjingtong 多谢。我写的富文本编辑器是基于 WebBrowser 的,我是打算这个项目开源的同时也把它放出来。如果单纯的 Windows 软件,在 FireMonkey 里面嵌入一个 VCL 的 Form 还是可以做到的。问题是如果是手机,估计就没戏了。
不过这几天我考虑了一下,暂时第一步,还是先做 VCL 的,也就是把以前的基于 D7 的代码整理一下,去掉没开源的第三方控件,简化掉工程里面一些可有可无的功能,然后能够在最新版 DELPHI 底下编译通过,就先放出来。然后在此基础上,再考虑第二步的优化算法,优化代码,然后再考虑第三步的移植到 FireMonkey。
最近时间不多,进度肯定快不起来。看看春节假期的时间里面能不能干点活。
----------------------------------------------
-
|
作者: |
|
2020/1/14 17:05:40 |
30楼: |
@edwinyeah 我会放到 github 上面的。
只是以前的代码很烂,真的不好意思放出来给大家看。原本想花点时间搞得稍微好点再放,但实在是时间和精力有限。所以现在打算先整一个能跑的,先放出来。然后再优化。
----------------------------------------------
-
|
作者: |
|
2020/1/15 10:47:24 |
31楼: |
@pcplayer 对先用vcl的,先把整个业务跑起来,细节预留出完善的接口或方法就行,比如我写东西,有时候好多未来会用到的事件,先定义然后空实现,在begin和end中间写上注释或todo。整个跑起来有人使用也会对自己是个激励,会让你也有不断完善细节的动力。广度和深度在前期是不要想着全部能达到的,一条坑坑洼洼能到终点的完整线路,要好于半条笔直平坦的道路,虽然两者都有达到笔直完整的机会,但对于现代IT行业来说,谁都想要个马上能用,慢慢完善的东西。因为前者你提供了能实现整个目标的方案,后者没人会关注的。希望你能坚持。 另外补充一点,如果打算长期投入,要做好能收服务费用的地方,编码过程要注意一些模块或功能可以单独被别人使用,比如通讯方面的,可以方便的抽取来脱离了你的项目给别人用,做订制化的需求。
----------------------------------------------
18114532@qq.com
|
作者: |
|
2020/1/15 17:53:07 |
32楼: |
我看好去中心化应用,无论是架构去中心化还是政治去中心化,去中心化的应用会成为未来的主流,但要到未来啥时候呢,不好估计。
人类社会的交换最早就是去中心化,你家有米缺肉,我家养鸡缺米,那彼此就交换了。随着交通越来越发达,中心化程度越来越高。
互联网恰恰是相反的,最早是中心化,为什么?因为带宽不足,没那么多带宽支持点对点的数据交换。随着带宽越来越大,去中心化的应用会越来越多。
不仅仅聊天工具,连DNS这等底层协议迟早要变为去中心化或者被弃用。
----------------------------------------------
软件是什么,相信很多人都说不清。
|
作者: |
|
2020/1/15 17:57:34 |
33楼: |
@hawke2e 是的。我最早开始这个项目,想的就是逐渐做一个完全去中心化的东西出来。这也是一种思考方式。
当然,中心化的东西,需要考虑的问题会少很多,代码因此简单。但人类社会的组织方式本身是去中心化的。
----------------------------------------------
-
|
作者: |
|
2020/1/15 18:00:34 |
33楼: |
在中国搞去中心化对于个人最大障碍我认为在于环境,中国天然排斥去中心化;起码在20、30年内都不会改变,届时我们都老了。 所以,如果你20来岁,又不在中国,那搞去中心化肯定是赚的。
----------------------------------------------
软件是什么,相信很多人都说不清。
|
作者: |
|
2020/1/15 18:31:15 |
34楼: |
pcplayer和其他志于搞去中心化应用的朋友,给个指引: 像去中心化这种社会变革,从用户角度来看,最初的产品形态都是信息的获取或者信息查询。比如:互联网最初的产品形态就是网站,手机端的就是看新闻。然后才是交互形式复杂的应用。
同理, 相同的使用场景,发生去中心化应用取代中心化应用,那么这场景最初也会发生在信息获取上,而不是聊天工具。
----------------------------------------------
软件是什么,相信很多人都说不清。
|
作者: |
|
2020/1/15 19:05:27 |
35楼: |
虽然我不知道你们为什么 讨论 去中心化。 但是 聊天工具,本来就可以 去中心化。 例如 最简单的 WIFI Ad Hoc 模式。就是 无中心的。 大家 碰面 一起聊天(大家在一起,居然不说话,用机器打字或画图聊天,你们知道谁开发的软件这样干了吗?)
另外就是 p2p 聊天。KAD 网络就可以这样。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2020/1/15 19:30:24 |
36楼: |
楼上的,一看就是没玩过qtox...那才是真正去中心化。
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
|
作者: |
|
2020/1/16 9:19:43 |
37楼: |
kad 基础上家个密就高级了?还真正?我说的也是真正的。 我没玩过的多了去了。 你没玩过的也多了去了。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2020/1/16 10:05:41 |
38楼: |
懵逼了,怎么突然就说到去中心化,这楼歪的厉害啊!
----------------------------------------------
虽千万人吾往矣!
|
作者: |
|
2020/1/16 12:07:10 |
39楼: |
就聊天来说,国内用户最多的是QQ和微信吧?这两个玩意,至少有一条:需要登录到一个中心服务器。
另外,QQ我不知道,微信的话,应该是聊天信息通过服务器转发给对方的。
要做到最简单的2点: 1. 没有一个中心服务器用来做用户登录,做用户身份认证; 2. 聊天信息不需要通过中心服务器转发;
要做到这两点,就会有很多麻烦事,而且可能还不稳定可靠,要做到稳定可靠,麻烦事更多。所以,如果是做一个聊天的产品,有服务器,简单很多。这个也就是最近这些年,云计算很流行的原因。
如果彻底没有中心服务器来支撑,俺名之为:雾计算。
这个想法俺很多年前就有了,能力有限,做不出来。那时候也没有类似的软件出现。
现在有了,比如 ZeroNet,比如....反正已经出来好多了。 另外,比特币也是一个彻底去中心化的应用。
只是,这些应用,我没看到过是 Delphi 代码写的。
----------------------------------------------
-
|
作者: |
|
2020/1/17 22:19:33 |
40楼: |
支持,支持!
----------------------------------------------
-
|
作者: |
|
2020/1/18 17:23:24 |
41楼: |
支持!!支持!!
----------------------------------------------
你我,都可以是个造梦者!欢迎加入脚本引擎PaxCompiler交流群303904495http://www.cnblogs.com/fireboxsoft有需要错别字检测软件的朋友可以在我博客上的地址下载使用,备注“2ccc”的朋友可以免费获取超级黄金VVVVVVVVVVIP授权
|
作者: |
|
2020/1/26 17:15:07 |
42楼: |
期待!!!
----------------------------------------------
-
|
作者: |
hs_kill (lzl_17948876) |
★☆☆☆☆ |
-
|
普通会员 |
|
2020/1/26 21:52:00 |
43楼: |
支持支持......
不过我建议能不能吧核心功能分离出来, 其他功能已插件形式提供, 哪怕代码级别的插件也好啊, 这样可以根据需求增减或替换功能
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
|
作者: |
ywqq (ywq) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2020/1/27 0:10:14 |
44楼: |
支持支持!
----------------------------------------------
-
|
作者: |
|
2020/1/28 17:37:55 |
45楼: |
@hs_kill (lzl_17948876) 43 楼,目前我在重构,也就是架构上做成比较容易拆卸的模式。但最终会开源。有源代码你随便整。
这几天碰到一个怪事,我把以前做的那个 WebBrowser 的编辑器拿出来重新编译测试,发现有问题。我已经排除了运行环境问题,也排除了其它一些问题,比如我单独拖一个 TWebBrowser 出来写一个例子程序,那个问题不存在。偏偏在我写的控件里面它就存在。很奇怪。继续找原因。
----------------------------------------------
-
|
作者: |
|
2020/2/2 10:55:54 |
46楼: |
支持!!!!!
----------------------------------------------
-
|
作者: |
wjhyp (wjhyp) |
▲▲△△△ |
-
|
普通会员 |
|
2020/2/5 14:24:32 |
47楼: |
果断支持,期待。
----------------------------------------------
-
|
作者: |
|
2020/2/13 4:02:04 |
48楼: |
为了这个代码重构,最近几天学习了一些 Delphi 的新技术。主要是 MVVM 模式的概念和在 Delphi 上的实现。也学习了一下用 LiveBindings 来实现 MVVM 模式。
顺便把学习结果写在了我的 cndev 的博客里面。
----------------------------------------------
-
|
作者: |
|
2020/2/13 9:56:22 |
49楼: |
支持支持!
----------------------------------------------
-
|
作者: |
|
2020/2/13 16:35:35 |
50楼: |
支持开源。
----------------------------------------------
人的泪代表执着。\r\n鬼的泪代表爱和重生
|
作者: |
wjhyp (wjhyp) |
▲▲△△△ |
-
|
普通会员 |
|
2020/3/21 16:42:16 |
51楼: |
每过段时间回来再看看,进度如何了。
----------------------------------------------
-
|
作者: |
dalas (dalas) |
★☆☆☆☆ |
-
|
普通会员 |
|
2020/3/21 20:02:09 |
52楼: |
两个月了,有什么进展?
----------------------------------------------
-
|
作者: |
|
2020/3/26 0:10:52 |
53楼: |
两个月了,整理代码啊。把这里提到的基于 TWebBrowser 的富文本编辑器整理出来,放到 github 上了。
整理代码的过程中发现以前的代码因为赶时间,架构不好。然后研究了一下 MVVM 模式,研究了一下如何用 LiveBindings 去实现 MVVM 并且要做到 VCL 和 FMX 兼容。写了一些实验性的代码。然后写了两篇博客,并且把例子代码发 github 上了。
因为之前实现的就是基于 UDP 的 P2P 的东西。以前我写这样的东西,网上没有任何资源。我自己写得虽然稳定,但代码烂。上网一搜,这些年出来好多类似的东西。想看看别人写的是否可以拿来用或者借鉴,下了一些代码研究测试了一下。但类似的东西,大多是C的,DELPHI 的比较少。github 上有一个把 C 代码改为 Delphi 的,我在 Delphi 底下测试了一下,能工作,但不稳定。
顺便读了几篇老外写的 NAT 穿越的文档,测试了一下 TCP 打洞穿越 NAT,结论是,支持的路由器太少,不值得去花时间做。测试代码我也发到 github 上了。
----------------------------------------------
-
|
作者: |
|
2020/3/26 4:40:28 |
54楼: |
楼主是个好人,却总舍不得贴博客网站、代码网站,所以不得不搜了一下,借花献佛给大家:
基于 WebBrowser 的富文本编辑器 https://blog.csdn.net/pcplayer/article/details/105085253
基于 LiveBindings 的 MVVM 模式的例子代码 https://blog.csdn.net/pcplayer/article/details/104303639
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2020/3/26 4:47:26 |
55楼: |
>>希望以后可以基于 Javascript 和 CSS 做一套任何浏览器都可以兼容的富文本编辑器,而且是 Delphi 可以调用的。这样就可以在 FireMonkey 框架里面实现一个富文本编辑器了。 如果有谁知道有这样的编辑器,请通知我。
https://www.delphihtmlcomponents.com/demo.html
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2020/3/26 9:58:54 |
56楼: |
楼上多谢。人家这个功能强大,是商业化的软件,要钱的。我的目标是能完成简单的富文本编辑就行,但最好是开源的。穷人木有钱。我自己写出来的,也开源。反正也没靠 Delphi 挣到钱。但因为是开源,肯定不够完整、严密,质量也多半不行。那是需要很多时间打磨的。
----------------------------------------------
-
|
作者: |
|
2020/3/26 11:31:19 |
57楼: |
第一步,先成功了再说,要无耻一点。英雄不问出身。
备注:这个控件可以在各大群里找到,而且是3.9源码版
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2020/3/26 11:33:19 |
58楼: |
除此以外,TMS 也有FMX RICHEDIT。 还有一个开源作品:http://bbs.2ccc.com/topic.asp?topicid=553493 http://bbs.2ccc.com/topic.asp?topicid=544283
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2020/3/26 12:17:51 |
59楼: |
https://gitee.com/HCView/HCView-Pascal 我开源的,里面有一个HCEdit,看看是否符合你的要求,开源免费的。
----------------------------------------------
18114532@qq.com
|
作者: |
|
2020/3/26 17:17:23 |
60楼: |
多谢59楼。我下载来学习一下。
----------------------------------------------
-
|
作者: |
|
2020/3/26 17:31:50 |
61楼: |
下载了 59 楼的开源代码,太厉害了。教科书级的代码。
----------------------------------------------
-
|
作者: |
|
2020/3/26 18:16:32 |
62楼: |
功能不敢说多么强大,代码工整度和规范上还是有自信的。
----------------------------------------------
18114532@qq.com
|
作者: |
|
2020/3/28 10:06:43 |
63楼: |
冲“教科书级”略略看了HCView-Pascal的代码,代码编写规范教科书级我没意见,but。。。呵呵,真赞不出口。 @abcjingtong: 看了你的代码就知道前面我说的话你看不懂。并没有踩你的意思,我也是这么走过来的,你说你很喜欢写代码,我简单说几句,你愿意进一步提高就研究我说的话,否则,赚钱更重要。
---------- 像HCView这种技术比较密集的组件,需要有核心(或者说架构)的意识。而核心不是基础功能和主要数据结构,我看你的代码你是这么认为的。核心跟功能的关系是里与表的关系,好比:武术家有单手开砖的功能,而这功能要靠神经系统、发达的肌肉、强健的骨骼等内在机制互相配合来实现。 就拿THCLineItem,你的思路就是line是文档里的元素,所以把绘画过程封装在THCLineItem。(我没细看说的细节可能不准确)
然而,文档里的元素不属于核心!! 就绘画过程,元素何时绘画、如何保证相邻元素不会重叠在一起、绘画得够不够迅速、如何通过避免重复的绘画来提高性能、如何zoom in zoom out等等,这些问题才属于核心,而这些问题不是在THCLineItem.DoPaint一个函数就能解决,需要写一大堆单元才行。
寻找哪些问题才属于核心问题,往往可以通过极端的场景或者特性找出来,我简单列举几个场景,因为没研究过,细节可能不对,意思明白即可: 1. 假设文档有几千万页,几G,用户打开文档后立即拉到最后一页,组件如何迅速把最后一页展现出来。 2. 假设文档有几千万页,每页里,相邻的两个元素样式都不同,要么字体不一样要么非文字,用户迅速地按PgDn,如何避免界面卡顿或者闪烁。 3. 假设文档有几千万页,文档要支持通过正则表达式找文字,如何提高性能。 4. 两段文字,如果前一段文字在增删改后不出现行数改变,一般不影响后一段文字,但不绝对,如果某个字特大或者插入图片,那会影响后一段文字的排版。
等等。 当然这些问题都可以在你现有的结构上改和完善,只是会越改越乱越来越难改而已。
----------------------------------------------
软件是什么,相信很多人都说不清。
|
作者: |
|
2020/3/28 10:55:40 |
64楼: |
还有,像这种技术密集型的组件,技术上如果追求极致,其核心必定具有以下2个特征: 1. 核心跟领域相对独立。也就是说,核心从组件剥离出来后,稍作修改甚至不用改就能运用在其它领域里。就拿HCView来说,其核心不会关心是画一段文字、直线、波浪线还是几何图形,它关心的是它给出的RECT是否足够绘画,需要多大的RECT绘画,如何控制不要画出RECT的边界,是否会画得很久从而影响整体的绘画,如果要画得很久那只能空闲时再给时间画等等,这些才是核心要关心的问题。
2. 如果核心由若干核心模块紧密合作构成,那么往往每个核心模块剥离出来,稍作修改再加上“外壳”,就能独立成一组件。
----------------------------------------------
软件是什么,相信很多人都说不清。
|
作者: |
|
2020/3/28 12:55:35 |
65楼: |
感谢您的指点,我想仅从技术方面回复一下,THCLineItem.DoPaint(每一类Item)只封装了Line自己的绘制过程,不包括别的东西的绘制,它外面是Data层,Data外面是Section,Section外面是View。是一层层的处理的。我为了保证Item的各自灵活多样,所以每一类Item要画成什么样子是由这类Item自己决定的,Data层会根据它的大小告诉它你在这个Rect里绘制,至于绘制成什么样Data层不会管,包括鼠标键盘事件也是这样,从外往里传递,从里往外响应。
另外,关于如何得到最小的更新区域,我承认目前还不是很精确,导致不精确的原因主要是有一些功能并不是只在固定的区域,比如处理表格时,要在表格的左上角显示快速操作的工具栏,那这个更新区域就不是表格的区域了,批注内的文本修改时可能同时也要更新它对应的批注说明,目前我还没有弄到这一层面的精确计算区域,我曾经尝试过精确处理但最后放弃,原因有2,一是成本太高,二是我在10年前的xp机器性能上测试发现精确和不精确没有差别。但我在设计时是留有局部更新的,比如像gif动画这样的,每播放一帧并不是整个界面都更新的。
关于绘图效率,我没有试过上千页上万页的文档,最多测试过200多页,在这个量级上和word,wps没有什么差别,我看您比较注重这方面,如果您发现了在某种情况下绘图效率不高的话,可以具体说下,我试试能不能优化下。
关于排版的原理,我很早之前录制过一个视频有说了一下, HC排版原理介绍视频 链接:https://pan.baidu.com/s/1hx32otmVl768_SP8Y6p2iQ 密码:y6nr
HCView和外部交互介绍 链接:https://pan.baidu.com/s/1yYyGDnFQGMGWzowKXOLzLQ 密码:iklh
另外,在这个帖子里讨论HCView有点不太合适,如果您愿意,欢迎加群649023932或加我QQ更方便的给我提意见,再次感谢您的交流。
----------------------------------------------
18114532@qq.com
|
作者: |
|
2020/3/28 17:04:27 |
66楼: |
63 楼提的意见比较硬核,也确实非常有道理。东西做大了,架构非常重要。做着玩的小东西,那就是想到哪做到哪。
65 楼的解释也有信息含量。
我觉得这样的讨论和碰撞,我作为旁观者可以学到很多。你们可以继续。
----------------------------------------------
-
|
作者: |
|
2020/3/28 18:49:29 |
67楼: |
我当然知道THCLineItem.DoPaint是指直线这类文档元素的绘画过程。 看THCLineItem.DoPaint的参数: (const AStyle: THCStyle; const ADrawRect: TRect; const ADataDrawTop, ADataDrawBottom, ADataScreenTop, ADataScreenBottom: Integer; const ACanvas: TCanvas; const APaintInfo: TPaintInfo); 把[ADataDrawTop, ADataDrawBottom, ADataScreenTop, ADataScreenBottom]范围的Data画到ADrawRect范围的画布ACanvas上,用风格AStyle来画,APaintInfo好像是用来处理缩放的。 没这么简单吧: THCLineItem不需要关心何时何处进行实际绘画,它只需要关心什么内容画成什么样子就够了。所以,是不是应该传进去是虚拟画布? 这样的好处: 1. 核心无需担心THCLineItem超范围绘画 2. 可以缓存这样得到的虚拟画布,在相同条件的绘画上重用,这样能提高效率 3. THCLineItem左右不了整个页面的绘画,因为核心可以多线程调用。而且多线程能加快绘画速度。 4. 得到的虚拟画布再由核心处理缩放,也就无需APaintInfo
当然这是很粗鄙的看法,毕竟我没研究过这领域,我也不感兴趣。 ----------
前面我说的意思是指出你对架构的认识还是比较初级,跟我当年一样。你很简单的认为,从用户角度看,HCView有概念:文字段 line 几何图形 Section Table等,那么你每一样设计一个类,那么HCView的活动就写成这些类之间的交流了,对吧?! 呵呵,看到HCView文档里各个单元的单元名都是静态的名词我就皱眉头了,说明你把核心的处理都分散写到各个类里,我希望看到体现控制、动态的名字起的单元名,这样说明你已经有控制整个HCView运作的意识。 设计能体现设计者对事情的控制力,落到代码层面就是一个个起控制软件运作作用的单元。
需不需支持几千万页的文档要看HCView的卖点,以前说了卖点要么讨好用户要么讨好开发人员。现在没办法,你已经写成这样,你可以根据现有结构的能力来寻找一些卖点。 大概就这样。 如果你想技术上更上一层楼,你回答得太快了,你需要反复看我说的话。还是那句话,赚钱最重要,技术这些有机会再提高吧。
----------------------------------------------
软件是什么,相信很多人都说不清。
|
作者: |
|
2020/3/28 19:18:00 |
68楼: |
再次谢谢!
----------------------------------------------
18114532@qq.com
|
作者: |
|
2021/11/26 22:26:58 |
69楼: |
支持一下,
----------------------------------------------
-
|
作者: |
|
2021/11/27 10:21:22 |
70楼: |
再次谢谢!
----------------------------------------------
-
|
作者: |
|
2021/11/27 14:24:45 |
71楼: |
楼主是个好人.顶
----------------------------------------------
delphi|vue|golang hnysoft|hnyerp+mes+srm
|
作者: |
|
2021/11/27 23:21:10 |
72楼: |
支持!!
----------------------------------------------
-
|
作者: |
|
2022/5/12 22:46:06 |
73楼: |
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
SPAM
|
|