내 접근 방식. 코어 - 엔진. - 페이지 99

 
Реter Konow :
요컨대, 사용자의 가치가 변할 때마다. 매개변수의 경우 이 값을 공용체의 변수 값으로 변환하고 공통 바이트 배열에 즉시 저장한 다음 uint로 변환하여 리소스에 기록해야 합니다.

Union 구조 내에 사용자 매개변수가 있어야 합니다. 매개변수를 변경하면 int 배열을 변경하면서 구조가 변경됩니다.

union c
{
   uint i[ 2 ];
   long width ;
}cc;
 
cс. width = 200 ;

i[2]는 다른 프로그램에서 읽는 사용자 리소스입니다.

한 줄 cc.width = 200을 사용하면 다음과 같이 변경됩니다.

  1. 너비를 담당하는 매개변수,
  2. 이 매개변수를 포함하는 구조,
  3. 타사 프로그램이 읽는 리소스의 배열

그리고 여기에는 변환 및 복사가 없고 표시만 있습니다.
 
Vasiliy Sokolov :


연결 속성 파일에서 래퍼 기능을 변경하고 각 사용자를 캐스팅할 수 있습니다. Union에서 해당 변수에 값을 입력하고 이동 중에 바이트 배열을 구성합니다. 단, 전송해야 하는 텍스트 값도 StringToChar()를 사용하여 바이트 배열로 변환해야 합니다.

그러나 동시에 Union의 사용은 의미를 상실합니다. 결국 여전히 StringToChar()를 사용해야 하는 경우 모든 것을 문자열로 수집한 다음 StringToChar()를 사용하여 전체 문자열을 바이트로 변환하지 않는 이유는 무엇입니까?

 
Vasiliy Sokolov :

Union 구조 내에 사용자 매개변수가 있어야 합니다. 매개변수를 변경하면 int 배열을 변경하면서 구조가 변경됩니다.

i[2]는 다른 프로그램에서 읽는 사용자 리소스입니다.

한 줄 cc.width = 200이면 다음과 같이 변경됩니다.

  1. 너비를 담당하는 매개변수,
  2. 이 매개변수를 포함하는 구조,
  3. 타사 프로그램이 읽는 리소스의 배열

그리고 여기에는 변환 및 복사가 없고 표시만 있습니다.

Vasily, 당신은 우리가 양자 협력에 대해 이야기하고 있다는 것을 잊었습니다. 내 엔진에서는 공용체에 대한 모든 작업을 수행할 수 있지만 사용자 코드에 대해서는 책임을 질 수 없습니다. 나는 래퍼만 생각해낼 수 있고 그것들을 포함 파일에 넣을 수 있습니다.

사용자가 유니온을 사용할 것이라는 보장은 어디에 있습니까? 그래서 내 래퍼 함수를 호출할 때 내 자신이 해당 값을 가져와서 포함 파일 내의 내 공용체에서 내 변수 중 하나로 캐스팅해야 합니다.

 
Реter Konow :

연결 속성 파일에서 래퍼 기능을 변경하고 각 사용자를 캐스팅할 수 있습니다. Union에서 해당 변수에 값을 입력하고 이동 중에 바이트 배열을 구성합니다. 단, 전송해야 하는 텍스트 값도 StringToChar()를 사용하여 바이트 배열로 변환해야 합니다.

그러나 동시에 Union의 사용은 의미를 잃습니다. 결국 여전히 StringToChar()를 사용해야 하는 경우 모든 것을 문자열로 수집한 다음 StringToChar()를 사용하여 전체 문자열을 바이트로 변환하지 않는 이유는 무엇입니까?

이중 구문 분석을 할 것이기 때문입니다. 모든 것을 문자열로 변환하면 매우 느립니다. 그런 다음 문자열을 배열로 분할합니다. 매우 빠릅니다. 그런 다음 라인에서 모든 것을 다시 수집합니다. 빠릅니다. 그런 다음 문자열을 필요한 유형으로 구문 분석합니다. 매우 느립니다.

 
Реter Konow :

좋아요, 하지만 텍스트는 어떻습니까?

StringToChar()를 통해 바이트로 변환해야 합니다. 결국 노조를 통해서는 불가능한 걸까요?

네, 번역이 필요하지만 파싱과 달리 빠릅니다.

 

예를 들어:

다음은 연결 속성 포함 파일의 래퍼 기능입니다.

 string E_Last_10_bars_2_Close_price( string n = rare_value,   int Property = - 1 ){ return (GET_N_SET( 11 ,n,Property));}

이 함수는 다음과 같이 호출됩니다.

E_Last_10_bars_2_Close_price( Close [ 2 ]);

즉, 사용자는 테이블 셀닫기 [ 2 ]로 설정합니다.

 Close [ 2 ] - это значение дабл.

따라서 그의 프로그램에서 내 래퍼 함수 내에서 값( Close [ 2 ] )을 char 배열로 나타낼 수 있습니다.

그러나 동일한 셀에서 사용자는 "Hi! :)" 값을 보낼 수 있습니다. 그러면 어떻게 될까요?

E_Last_10_bars_2_Close_price("Привет! :)");
 
 

오, Peter, 당신은 잘못된 프로그래밍 언어로 시작했습니다. 당신은 공부하기 위해 엄격하게 타이핑되지 않은 무언가가 필요했습니다.

일반적으로 MQL을 기반으로 하는 형식화되지 않은 PL을 생각해 낸 것으로 이해합니다. 그리고 문자열을 사용하여 엄격한 타이핑을 우회했습니다. 기동입니다!

 
Vasiliy Sokolov :

오, Peter, 당신은 잘못된 프로그래밍 언어로 시작했습니다. 당신은 공부를 위해 엄격하게 타이핑되지 않은 무언가가 필요했습니다.

일반적으로 MQL을 기반으로 하는 형식화되지 않은 PL을 생각해 낸 것으로 이해합니다. 그리고 문자열을 사용하여 엄격한 타이핑을 우회했습니다. 기동입니다!

예,)) 기사의 움직임!

 

테이블을 사용하는 경우 테이블에 표시할 데이터의 종류(엄밀히 숫자 또는 텍스트)를 결정해야 합니다. 텍스트인 경우 - 라인을 전송합니다. 실제라면 함수는 다음과 같아야 합니다.

 string E_Last_10_bars_2_Close_price( double n ,   int Property = - 1 ){ return (GET_N_SET( 11 ,n,Property));}