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

 
joo :

v4.3, 사용자 정의 펌웨어.

기본 창 - 가로 위치, 기타 대화 상자(주문) - 세로. 주 창에서 대화 상자로 앞뒤로 제어되지 않은 전환을 성가시게 합니다.

뭐, 와.... 스마트 로테이터 같은 전문 프로그램도 소용이 없다....

재미있지만 터미널용 Smart Rotator에서 가로를 강제로 적용하면 모든 창이 가로로 표시됩니다. 하지만 나는 초상화를 원한다! - 설정에서 단말기의 세로 모드를 설정했는데 어떻게 되나요? - 헤헤... 여전히 일부 창은 풍경이고 일부는 세로입니다.

 

메타에디터의 버그입니다.

객체에 대한 포인터를 반환하는 Obj() 함수가 있다고 가정해 보겠습니다.

class CObject {    public :      int value ; }; CObject object ;

CObject* Obj() { return GetPointer( object ); }

이제 Obj().value = 10이라는 함수를 통해 직접 객체에 접근하면 포인트를 입력한 후 클래스의 멤버 및 메서드 팝업 목록이 나타나지 않습니다.

 
meat :

MQL이 클래스 템플릿을 지원하지 않는다는 점을 고려하면 CArray 클래스 는 만병통치약이 아닙니다. 배열이 반드시 단순 유형으로 구성되는 것은 아닙니다. 그리고 프로그램의 각 새 클래스에 대해 완전한 CArray 자손 구조를 만드는 것은 그다지 흥미롭지 않습니다. CArray 자손이 있는 각 파일에 몇 줄의 코드가 필요한지 확인하십시오(ArrayInt.mqh, ArrayDouble.mqh 등).

그리고 프로그램의 구조가 어떻게 구성되는지는 부차적입니다. 주제에서 벗어나지 맙시다. 결론은 변경할 수 있는 매개변수가 있으면(이 경우에는 reserved_size ), 가져올 수 있어야 합니다.

복합 형식은 CObject에서 상속되며 CArrayObj에 안전하게 포장됩니다.

Reserve_size - 린 프로그래밍 패러다임을 깨뜨립니다. 그것은 초보자에게만 존재하며 일반 언어에는 전혀 없어야합니다.

 
C-4 :

Reserve_size - 린 프로그래밍 패러다임을 깨뜨립니다. 그것은 초보자에게만 존재하며 일반 언어에는 전혀 없어야합니다.

당신은 이상한 패러다임을 가지고 있습니다. 예약은 리소스를 경제적으로 사용 하기 위한 것이므로 메모리 재할당 및 데이터 이동 횟수를 줄입니다(이는 비용이 많이 드는 작업입니다). 그리고 이 매개변수를 관리해야 하는 것은 코드 개발자입니다. 자신의 프로그램이 메모리를 어떻게 사용할지 미리 알고 있을 뿐입니다. 그리고 이것은 배열이 아프리카에서 배열이고 메모리가 모든 곳에서 필요하기 때문에 언어와 전혀 연결되지 않습니다.

 
meat :

당신은 이상한 패러다임을 가지고 있습니다. 예약은 리소스의 경제적인 사용을 위해 설계되어 메모리 재할당 및 데이터 이동 횟수를 줄입니다(이는 상당히 비용이 많이 드는 작업입니다). 그리고 이 매개변수를 관리해야 하는 것은 코드 개발자입니다. 자신의 프로그램이 메모리를 어떻게 사용할지 미리 알고 있을 뿐입니다. 그리고 이것은 배열이 아프리카에서 배열이고 메모리가 모든 곳에서 필요하기 때문에 언어와 전혀 연결되지 않습니다.

여기에 자신의 질문에 대한 답변이 있습니다.

이 매개변수를 관리하는 것은 코드 개발자에게 달려 있습니다. 자신의 프로그램이 메모리를 어떻게 사용할지 미리 알고 있을 뿐입니다. 언어랑은 상관없어요...

이는 언어 도구와 관련이 없으므로 더 높은 사용자 수준에서 결정해야 합니다. 따라서 이러한 작업을 위해 특별히 생성된 CArray* 클래스를 사용하여 문제를 해결하십시오. 그런데 이 작업을 위해 만들어진 것처럼 훌륭하게 대처합니다.

 
meat :

당신은 이상한 패러다임을 가지고 있습니다. 예약은 리소스의 경제적인 사용을 위해 설계되어 메모리 재할당 및 데이터 이동 횟수를 줄입니다(이는 다소 비용이 많이 드는 작업임)...

 void TestFoo()
{
  CArrayObj listObj;
  listObj.Resize( 100 );
   for ( int i = 0 ; i < 100 ; i++)
     listObj.Add( new CObject());
   int count = CountObj(listObj);
}

void CountObj(CArrayObj* obj)
{
   return obj.Size();
}
매우 경제적인 코드. 메모리 재할당이 전혀 없습니다. 요소의 수는 미리 알고 있습니다. 배열은 전달되지 않고 포인터가 전달됩니다. 속도는 믿을 수 없을 정도로 빠르며 reserv_size가 필요하지 않습니다. 이 결정이 마음에 들지 않는 이유는 무엇입니까?
 
C-4 :
매우 경제적인 코드. 메모리 재할당 전혀 없습니다. 요소의 수는 미리 알고 있습니다 . 배열은 전달되지 않고 배열에 대한 포인터입니다. 속도는 믿을 수 없을 정도로 빠르며 reserv_size가 필요하지 않습니다. 이 결정이 마음에 들지 않는 이유는 무엇입니까?

뭐, 모든 게 이렇게 간단하다면... 실상 원소의 개수는 원칙적으로 미리 알 수 없다. 또한 이 숫자는 동적으로 변경됩니다. 따라서 단순화된 "Hello world" 예제는 의미가 없습니다. 그리고 단 두 줄로 대체할 수 있습니다.

CObject listObj[ 100 ];
int count = ArraySize (listObj);

일반적으로 왜 이 모든 홍수가 발생합니까? 당신이 개인적으로 reserved_size 매개변수를 사용하지 않는다면, 신을 위한 것입니다. 나머지 모두가 바보이거나 초보자라고 결론을 내리지 마십시오. 어쩌면 당신은 뭔가를 이해하지 못하고 있습니다. 배열(벡터, 문자열 등)과 함께 작동하도록 설계된 표준 STL 컨테이너에도 항상 예약용량 과 같은 메서드가 있습니다.

 
joo :

뭐, 와.... 스마트 로테이터 같은 전문 프로그램도 소용이 없다....

재미있지만 터미널용 Smart Rotator에서 가로를 강제로 적용하면 모든 창이 가로로 표시됩니다. 하지만 나는 초상화를 원한다! - 설정에서 단말기의 세로 모드를 설정했는데 어떻게 되나요? - 헤헤... 여전히 일부 창은 풍경이고 일부는 세로입니다.

재고 펌웨어에서는 정상적으로 작동합니다(적어도 예상대로).
 

마지막 빌드에서 MetaEditor의 검색이 정상적으로 작동하지 않았습니다( 오른쪽 상단 모서리 에 있는 창). 거기에 원하는 단어를 입력하면 아무 이유도 없이 가져온 비슷한 문구로 자동으로 바뀝니다. 결과적으로 코드에서 아무것도 찾을 수 없게 됩니다. 예를 들어 "ERROR_VALUE"라는 변수를 찾으려고 하는데 검색 문자열에 "error_value 7"이 표시됩니다.

질문: 무슨 일이야? 이 남은 쓰레기는 검색 창에서 어디에서 왔으며 어떻게 제거합니까?

 
meat :

마지막 빌드에서 MetaEditor의 검색이 정상적으로 작동하지 않았습니다( 오른쪽 상단 모서리 에 있는 창). 거기에 원하는 단어를 입력하면 아무 이유도 없이 가져온 비슷한 문구로 자동으로 바뀝니다. 결과적으로 코드에서 아무것도 찾을 수 없게 됩니다. 예를 들어 "ERROR_VALUE"라는 변수를 찾으려고 하는데 검색 문자열에 "error_value 7"이 표시됩니다.

질문: 무슨 일이야? 이 남은 쓰레기는 검색 창에서 어디에서 왔으며 어떻게 제거합니까?

키보드를 청소하십시오.