错误、漏洞、问题 - 页 2690

 

你好。

可能的错误是什么?我在图表上放置了同一指标的两个副本,我改变了第一个指标中线条的颜色,第二个指标中线条的颜色也发生了变化,但我没有改变第二个指标中的任何内容。没有全局变量

 
Nikolai Semko:

我看不出这里面有什么逻辑。
对于简单的类型,首先,你可以这样做。

第二,它是。

而这并不全是拐杖。

在这两种情况下的结果。

17*256+92=4444

其逻辑是,如果你可以在一个函数中为结构体将数据写入数组,那么对于简单类型也应该是如此。

好吧,这里的情况很简单。

 
Aliaksandr Hryshyn:

其逻辑是,如果数据可以被写入一个函数内的结构数组,那么对于简单类型也应该是如此。

我想用你的意见以外的东西来证实这个逻辑。

如果你有兴趣,可以谷歌一下 "C#结构体到字节数组"。

请注意,C#是微软为所有非程序员设计的脑筋急转弯,在MQL中只需几行就能完成的事情,在C#中,其实根本没有提供--在谷歌的例子中,一切都通过Marshal完成,这是用非管理的代码工作,也就是说,它在.Net之外--用MQL的话说--"这是一个.dll调用"。


这就是它的逻辑性...

 
Igor Makanu:

我想用你的意见以外的东西来证实这个逻辑。

如果你有兴趣,可以谷歌一下 "C#结构体到字节数组"。

请注意,C#是微软为所有非程序员设计的,在MQL中只需几行就能完成的事情,在C#中,实际上根本没有提供--在谷歌的例子中,所有的事情都是通过Marshal完成的,这是与非管理代码的工作,也就是说,它是在.Net之外的--用MQL的话说--"这是一个.dll的调用。"


这就是它的逻辑性...

里面有很多这样的内容。

BinaryWriter.Write Method

大量的重载方法。

Write(UInt64)   
Write(UInt32)   
Write(UInt16)
.....
 
Aliaksandr Hryshyn:

有这样一件事。

大量的重载方法。

https://metanit.com/sharp/tutorial/5.6.php

这类似于在MQL中使用标志FILE_BIN来处理文件。

如果我没有弄错的话,你并不想与文件打交道,而只是将一个简单的数据类型序列化为一个字节数组。

 
Igor Makanu:

https://metanit.com/sharp/tutorial/5.6.php

这类似于在MQL中使用标志FILE_BIN来处理文件。

如果我没弄错的话,你想把一个简单的数据类型序列化成一个字节数组

文件流

记忆流

无论是文件还是内存。

为什么你对C#如此反感 :)?
 
Aliaksandr Hryshyn:

文件流

记忆流

文件和内存都是如此。

为什么你对C#如此反感 :)?

关于你发明的敌意,我只是写道,该语言是为非程序员准备的,这相当于对用户 非常友好,具体来说就是

关于文件流,你已经使一个简单的任务变得相当复杂了

我向你提问的实质是,在 "原始数据 "处理方面,MQL是一种非常高级的语言,再举一个例子--MQL没有默认的结构排列,这对用户 来说很方便

 
Igor Makanu:

我只是写道,该语言是为非程序员设计的,这相当于一个非常用户友好的,要具体地说就是

关于文件流,你已经使一个简单的任务变得相当复杂了

我向你提出的问题的实质是,在 "原始数据 "处理方面,MQL是一种非常高级的语言,再举一个例子--MQL没有默认的结构排列,这对用户 来说很方便

只有在RAM中才有一个文件流的类似物。
 
Aliaksandr Hryshyn:
只有在RAM中才有文件流的类似物。

大多数简单的类型都可以通过这种方式转换为字节。

void OnStart()
{
   int i_value = 123456;
   uchar arr_byte[4];
   arr_byte[0] = (uchar)(i_value & 0x000000FF);
   arr_byte[1] = (uchar)((i_value & 0x0000FF00) >> 8);
   arr_byte[2] = (uchar)((i_value & 0x00FF0000) >> 16);
   arr_byte[3] = (uchar)((i_value & 0xFF000000) >> 32);
   ArrayPrint(arr_byte);

// проверим собрав обратно из байт int

   union _int
   {
      int i;
      uchar c[sizeof(int)];
   } ui;
   ArrayCopy(ui.c, arr_byte);
   Print(ui.i);
}

这段代码(第一部分)在C#中应该也能工作,至少它在整数类型 中从未出现过任何问题,看来这是第三种选择

你可以把我的代码包在一个循环里,使它更紧凑一些。

UPD。

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int i_value = 123456;
            uint mask = 0x000000FF;
            byte[] arr_byte = new byte[4];
            for(int i=0; i<4; i++)
            {
                arr_byte[i] = (byte)((i_value & mask) >> i*8);
                mask <<= 8;
                Console.WriteLine(arr_byte[i]);
            }
            Console.ReadLine();
        }
    }
}
 
Igor Makanu:

请注意,C#是微软为所有非程序员设计的智囊团,MQL中的内容在C#中只需几行就可以完成,事实上,根本不提供给

的确如此!而 "非程序员 "由于某些原因不知道 "没有规定"。
附加的文件: