오류, 버그, 질문 - 페이지 2690

 

안녕하세요.

무엇이 잘못되었을 수 있습니까? 나는 차트에 하나의 표시기의 두 복사본을 놓고 첫 번째 표시기의 선 색상을 변경하고 두 번째 표시기의 선 색상도 변경하지만 두 번째 표시기에서는 아무 것도 변경하지 않습니다. 전역 변수 가 없습니다.

 
Nikolai Semko :

나는 이것에 논리가 보이지 않습니다.
단순 유형의 경우 먼저 다음을 수행할 수 있습니다.

두 번째, 다음과 같이

그리고 그것이 모든 목발이 아닙니다.

두 경우 모두 결과:

17*256+92=4444

논리는 한 함수 내의 구조에 대해 배열에 데이터를 쓸 수 있는 경우 단순 유형의 경우에도 그래야 한다는 것입니다.

자, 여기 상황은 아주 간단합니다.

 
Aliaksandr Hryshyn :

논리는 한 함수 내의 구조에 대해 배열에 데이터를 쓸 수 있는 경우 단순 유형의 경우에도 그래야 한다는 것입니다.

나는 또한 당신의 의견이 아닌 다른 것으로 이 논리를 확인하고 싶습니다

관심이 있다면 구글 "C# 구조체를 바이트 배열로"

C# 언어는 모든 응용 프로그램 비프로그래머를 위한 Microsoft의 아이디어이며 C#의 몇 줄에서 MQL에서 수행되는 작업은 실제로 제공되지 않습니다. googled 예제에서는 모든 것이 Marshal을 통해 수행됩니다. 이것은 관리되지 않는 코드, 즉 . 이것은 .Net 외부에 있습니다 - MQL 용어로 - "이것은 .dll 호출입니다"


여기 논리에 대한 것이 있습니다 ...

 
Igor Makanu :

나는 또한 당신의 의견이 아닌 다른 것으로 이 논리를 확인하고 싶습니다

관심이 있다면 구글 "C# 구조체를 바이트 배열로"

C# 언어는 모든 응용 프로그램 비프로그래머를 위한 Microsoft의 아이디어이며 C#의 몇 줄에서 MQL에서 수행되는 작업은 실제로 제공되지 않습니다. googled 예제에서는 모든 것이 Marshal을 통해 수행됩니다. 이것은 관리되지 않는 코드, 즉 . 이것은 .Net 외부에 있습니다 - MQL 용어로 - "이것은 .dll 호출입니다"


여기 논리에 대한 것이 있습니다 ...

다음이 있습니다.

BinaryWriter.Write Method

많은 오버로드된 메서드:

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

다음이 있습니다.

많은 오버로드된 메서드:

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

이것은 FILE_BIN 플래그가 있는 MQL의 파일 작업과 유사합니다.

내가 틀리지 않았다면 파일 작업을 원하지 않고 간단한 데이터 유형을 바이트 배열로 직렬화하기만 하면 됩니다.

 
Igor Makanu :

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

이것은 FILE_BIN 플래그가 있는 MQL의 파일 작업과 유사합니다.

내가 틀리지 않았다면 파일 작업을 원하지 않고 간단한 데이터 유형을 바이트 배열로 직렬화하기만 하면 됩니다.

파일 스트림

메모리스트림

그리고 파일과 메모리.

왜 그렇게 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#에서 작동해야 합니다. 적어도 정수 유형 에는 문제가 없었습니다. 이미 옵션 번호 3인 것 같습니다.

내 코드를 루프로 감쌀 수 있습니다. 좀 더 간결해질 것입니다.

상향:

 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# 언어는 모든 응용 프로그램 비 프로그래머를 위한 Microsoft의 아이디어이며 C#의 몇 줄에서 MQL에서 수행되는 작업은 실제로 단순히 제공되지 않습니다.

너 뭐야! 그리고 "저프로그래머"는 어떤 이유로 이것이 "제공되지 않음"을 모릅니다.
파일:
사유: