MQL5中的OOP问题 - 页 62 1...555657585960616263646566676869...96 新评论 Vladimir Simakov 2020.05.21 16:54 #611 Dmitry Fedoseev: 终于有了非常有趣的东西。是 "蒸汽列车 "图案吗? 迪马,你没有在这里拖后腿,冷静点)))。 Igor Makanu 2020.05.21 16:59 #612 Vladimir Simakov: 不知何故,你做得不对) 纠正的PS 巫师! 它的工作原理! void OnStart(){ CTest test; Print("1.-----------------------"); Print(test.JSon()); Print("2.-----------------------"); test.a = 123456789; test.b = 9999999999999999; Print(test.JSon()); } 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) 1.----------------------- 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) { 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "测试":{ 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":10, 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":0.369。 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "t": "Hi" 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) } 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":555, 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":-9223372036854775808 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) } 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) 2.----------------------- 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) { 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "测试":{ 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":10, 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":0.369。 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "t": "Hi" 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) } 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":123456789 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":9999999999999 2020.05.21 20:56:34.192 tst_json (EURUSD,H1) } 所以,总的来说,通过这种简单的方式,我可以把简单的对象下载到json中,而不是像以前那样通过二进制数据下载。 谢谢你! Questions on OOP in Any questions from newcomers 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Dmitry Fedoseev 2020.05.21 17:04 #613 Vladimir Simakov: 迪马,你在这里没有拔苗助长,冷静点)))) 你的俱乐部里有一个多么自大的人啊。而在那个守门员之后,谁会在这里谈论它。你不觉得你是唯一能读懂的人吗? 这更多的是你不能完全掌握所有的智慧的问题。你一次砍掉一小块,然后在公众面前用你的自大狂作秀。骄傲的是它的精英主义,从这个知识可能是15年前,但现在关于这个问题的书籍和很多课程。 Vladimir Simakov 2020.05.21 17:47 #614 Igor Makanu: 巫师! 它的工作原理! 酷!一般来说,通过这种方式,可以将不复杂的对象卸载到json中,而不是像我平时那样--通过二进制数据来卸载 谢谢你! 它应该是这样的,断行是不必要的,这是为了清晰。 #define COMMA (text==NULL?"{":",") #define VALUE(dVal) Push(#dVal,dVal) #define STRUCT(dVal) PushStruct(#dVal,dVal.JSon()) class CJSon{ string text; public: CJSon():text(NULL){} CJSon* Push(string key,string value) {text+=COMMA+"\""+key+"\":\""+value+"\""; return &this;} CJSon* PushStruct(string key,string value) {text+=COMMA+"\""+key+"\":"+value; return &this;} CJSon* Push(string key,long value) {text+=COMMA+"\""+key+"\":"+(string)value; return &this;} CJSon* Push(string key,double value) {text+=COMMA+"\""+key+"\":"+(string)value; return &this;} string Finish() {return text+="}";} }; 我还想为数组和数组结构添加方法(我太懒了)。而且,原则上可以在kodobase中运行。 我提出,谁将成为时间上的第一人。 PS:我将进去检查)))) Igor Makanu 2020.05.21 17:51 #615 Vladimir Simakov: 这就是它应该有的样子,换行是不必要的,这是为了清晰。 而且还应该增加数组和结构数组的方法(懒)。而且,原则上可以在kodobase中运行。 我提出,谁将成为时间上的第一人。 PS:我进去看看)))) 发布在QB上 我认为,这是正确的事情! json是一种成熟的格式,对我来说,能够在C#和MQL中拥有100%的一对一的类,并且在运行时组织模型的加载是很方便的--到目前为止,在这个方向上有一个障碍。 并在这里和那里传递二进制数据....好吧,这不是什么新鲜事,只有懒人才能做到)))。 ZS:Python似乎也可以毫无问题地与json一起工作,我不知道Metaquotes用其新的MT5功能给了pythonists什么--只是抽出历史数据?- 这有什么意义呢? 这不是一个问题,我认为 Dmitry Fedoseev 2020.05.21 17:51 #616 Vladimir Simakov: 这就是它应该有的样子,换行是不必要的,这是为了清晰。 而且还应该增加数组和结构数组的方法(懒)。而且,原则上可以在kodobase中运行。 我提出,谁将成为时间上的第一人。 PS:我进去看看)))) 那么这样的对象创造 是如何快速运作的呢?它的应用有多大的便利性?用另一个宏来完成不是更好吗? 当然,如果任务是要给人留下印象,那么毫无疑问,效果是致命的。 Igor Makanu 2020.05.21 18:09 #617 Vladimir Simakov: 这就是它应该有的样子,换行是不必要的,这是为了清晰。 在VS中检查,通过剪贴板没有问题 {"test":{"a":10, "b":0.369, "t": "Hi"}, "a":123456789, "b":9999999999999}. 放在编辑器里。 public class Rootobject { public Test test { get; set; } public int a { get; set; } public long b { get; set; } } public class Test { public int a { get; set; } public float b { get; set; } public string t { get; set; } } Vladimir Simakov 2020.05.21 18:14 #618 Dmitry Fedoseev: 这种对象的创建 工作有多快?它有多大作用?多用一个宏来完成不是更好吗? 当然,如果任务是要给人留下深刻的印象,效果无疑是致命的。 如果你需要快速,只需运行二进制,没有任何注意事项。一个字符串是一个stoka--当然,你可以一次为N个字符分配内存。在这里,唯一的开销是text==NULL?"{":"," 但正是这种东西,编译器有义务进行优化和删除。这就是text(NULL)被初始化的原因,而不是text("{")。 Dmitry Fedoseev 2020.05.21 18:18 #619 Vladimir Simakov: 如果你需要快速,只需运行二进制,没有任何麻烦。一个字符串是一个stoka--当然,你可以一次为N个字符分配内存。在这里,唯一的开销是但这正是编译器有义务优化和删除的内容。这就是为什么text(NULL)被初始化,而不是text("{")。 我的意思是:(CJSon()).V.。 Vladimir Simakov 2020.05.21 18:33 #620 Dmitry Fedoseev: 我的意思是:(CJSon()).V... 有什么问题吗?在堆栈中分配12字节的内存,我不知道字符串对象到底是什么? 1...555657585960616263646566676869...96 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
终于有了非常有趣的东西。是 "蒸汽列车 "图案吗?
迪马,你没有在这里拖后腿,冷静点)))。
不知何故,你做得不对)
纠正的PS巫师!
它的工作原理!
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) 1.-----------------------
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) {
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "测试":{
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":10,
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":0.369。
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "t": "Hi"
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) }
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":555,
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":-9223372036854775808
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) }
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) 2.-----------------------
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) {
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "测试":{
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":10,
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":0.369。
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "t": "Hi"
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) }
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":123456789
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":9999999999999
2020.05.21 20:56:34.192 tst_json (EURUSD,H1) }
所以,总的来说,通过这种简单的方式,我可以把简单的对象下载到json中,而不是像以前那样通过二进制数据下载。
谢谢你!
迪马,你在这里没有拔苗助长,冷静点))))
你的俱乐部里有一个多么自大的人啊。而在那个守门员之后,谁会在这里谈论它。你不觉得你是唯一能读懂的人吗?
这更多的是你不能完全掌握所有的智慧的问题。你一次砍掉一小块,然后在公众面前用你的自大狂作秀。骄傲的是它的精英主义,从这个知识可能是15年前,但现在关于这个问题的书籍和很多课程。
巫师!
它的工作原理!
酷!一般来说,通过这种方式,可以将不复杂的对象卸载到json中,而不是像我平时那样--通过二进制数据来卸载
谢谢你!
它应该是这样的,断行是不必要的,这是为了清晰。
我还想为数组和数组结构添加方法(我太懒了)。而且,原则上可以在kodobase中运行。
我提出,谁将成为时间上的第一人。
PS:我将进去检查))))
这就是它应该有的样子,换行是不必要的,这是为了清晰。
而且还应该增加数组和结构数组的方法(懒)。而且,原则上可以在kodobase中运行。
我提出,谁将成为时间上的第一人。
PS:我进去看看))))
发布在QB上
我认为,这是正确的事情!
json是一种成熟的格式,对我来说,能够在C#和MQL中拥有100%的一对一的类,并且在运行时组织模型的加载是很方便的--到目前为止,在这个方向上有一个障碍。
并在这里和那里传递二进制数据....好吧,这不是什么新鲜事,只有懒人才能做到)))。
ZS:Python似乎也可以毫无问题地与json一起工作,我不知道Metaquotes用其新的MT5功能给了pythonists什么--只是抽出历史数据?- 这有什么意义呢? 这不是一个问题,我认为
这就是它应该有的样子,换行是不必要的,这是为了清晰。
而且还应该增加数组和结构数组的方法(懒)。而且,原则上可以在kodobase中运行。
我提出,谁将成为时间上的第一人。
PS:我进去看看))))
那么这样的对象创造 是如何快速运作的呢?它的应用有多大的便利性?用另一个宏来完成不是更好吗? 当然,如果任务是要给人留下印象,那么毫无疑问,效果是致命的。
这就是它应该有的样子,换行是不必要的,这是为了清晰。
在VS中检查,通过剪贴板没有问题 {"test":{"a":10, "b":0.369, "t": "Hi"}, "a":123456789, "b":9999999999999}.
放在编辑器里。
这种对象的创建 工作有多快?它有多大作用?多用一个宏来完成不是更好吗? 当然,如果任务是要给人留下深刻的印象,效果无疑是致命的。
但正是这种东西,编译器有义务进行优化和删除。这就是text(NULL)被初始化的原因,而不是text("{")。
如果你需要快速,只需运行二进制,没有任何麻烦。一个字符串是一个stoka--当然,你可以一次为N个字符分配内存。在这里,唯一的开销是
但这正是编译器有义务优化和删除的内容。这就是为什么text(NULL)被初始化,而不是text("{")。
我的意思是:(CJSon()).V.。
我的意思是:(CJSon()).V...
有什么问题吗?在堆栈中分配12字节的内存,我不知道字符串对象到底是什么?