dll을 언로드하는 방법 - 페이지 8

 
alsu >> :

인터프리터가 버그가 없으면 코드에 있는 명령을 건너뛰지 않습니다. 여기에 있더라도!

그런 최상급 "버그"는 필요하지 않습니다. 인터프리터에 몇 가지 결함이 있다고 해서 버그가 있다는 의미는 아닙니다. 적어도 동일한 VC의 버그 보고서를 살펴보고 "버그"가 무엇인지 이해하는 데 적극 권장합니다. 상황은 훨씬 더 심각하지만 올바른 정신을 가진 사람은 아무도 VC를 "버그"라고 생각하지 않을 것입니다. 그래서 여기도.


그리고 일반적으로 dll에 관한 것입니까? dll이 올바르게 작성된 것과 관련하여 이의가 있습니다. 올바르게 작동합니까? dll을 언로드하는 유일한 올바른 방법은 설명서에 권장되는 표준 방법이 있습니까?

 
alsu >> :

알렉스에로,

(i=limit;i>=0;i--)에 대한 시계열 주기는 완료 후 음수 인덱스 영역으로 충돌했습니다(경고로 확실히 확인됨)!!!


 int start ( )
   {
   for ( int i = 11 ; i > = 0 ; i - - ) continue ;
   Alert ( i ) ;
   return ( 0 ) ;
   }

))) 당신이 그것을 의미 했습니까?

얼마나 못생긴! 그리고 몰랐어요!!!

(오늘이 무슨 날이야... 서투른 날)

 
jartmailru >> :

즉, Expert Advisor에서 특정 dll을 지정해야 합니다.

그런 다음 어드바이저를 실행하고 메타 트레이더를 종료하지 마십시오.

다음으로 가장 중요한 사용 사례는 dll을 새 것으로 교체하는 척하는 것입니다.

메타 트레이더가 실행 중일 때 이것이 실패하면 (그리고 나는 파일을 삭제하여 확인합니다) -

그래서 시스템은 dll이 사용 중이라고 생각합니다.

짜잔. Expert Advisor가 작업을 완료했지만 Dll이 언로드되지 않았습니다.

이제 DLL을 교체하려면 전체 응용 프로그램을 다시 시작해야 합니다.

와우, 당신의 설명에서 올바르게 이해했다면 Expert Advisor가 실행 중일 때 dll이 연결된 dll 자체를 교체하는 것이 좋습니다! 어드바이저를 중지(버튼이 아닌)한 다음 dll을 교체하고 어드바이저를 다시 시작하려고 했습니까?

 
alsu писал(а) >>

그러나 멍한 프로그래머가 너무 열성적으로 메모리를 조작하기 시작하거나 계산을 위해 터미널에서 프로세서 시간을 소비하거나 심지어 신성한 (공포) - terminal.exe 프로그램의 메시지 대기열에서 스윙을 하면 사악한 메타 따옴표 그에게 복수할 것이다.

프로그램의 메시지 큐 핸들러는 실행 중인 코드의 모든 위치에서 동시에 "위대하고 끔찍한 Merlin과 같아야" 한다고 생각하십니까? 일반적으로 dll에서 다른 사람의 메시지 대기열을 만지는 것은 어떻습니까?

나는 당신의 머리카락을 곤두서게 하는 것들을 보았습니다.

여기까지는 그저 말일 뿐입니다. 코드 예제를 제공하십시오. 나뿐만 아니라 흥미로울 것입니다.

일반적으로 나는 dll이 언로드되지 않는 것을 눈치채지 못했다(나는 이미 그것에 대해 썼다. 나는 어드바이저와 인디케이터 모두에서 dll을 사용했다. "를 dll에 직접 삽입하고 결과는 번거롭지 않은 작업이었습니다).

 
Svinozavr >> :

))) 당신이 그것을 의미 했습니까?

뭐어! 그리고 몰랐어요!!!

(오늘은 무슨 날이 이렇게... 서투른지)

정확한 코드를 재현할 수는 없지만 다음과 같았습니다.

 int start ( )
{

. . .

int i ;
for ( i = 100 ; i > = 1 ; i - - ) //отмечу, что здесь было именно 1, а не 0
{
   //че-то делаем
   CallToDLLFunction ( ) ; //здесь вызывалась какая-то простенькая функция, время работы порядка 1-3 миллисекунд
}

if ( i < 0 ) return ( 0 ) ; //эти две строчки вставил уже когда заподозрил неладное
Alert ("i=", i ) ;

return ( 0 ) ;
}

빠른 시장에서 초당 여러 틱이 올 때 이러한 코드는 경고에서 시퀀스 i=0,i=-1,i=-2,i=-3을 제공합니다(터미널이 동안 몇 틱을 불었는지에 따라 start()) 그런 다음 다시 i=0입니다.

놓친 틱 - 그들과 함께 지옥에 발생합니다. 그러나 이것이 발생하는 경우 프로그램이 조건부 명령을 건너뛰어야 한다는 의미는 아닙니다. 실제로 코드에서 두 번 발생합니다(for 루프도 본질적으로 분기 명령임).

 
HideYourRichess >> :

와우, 당신의 설명에서 올바르게 이해했다면 Expert Advisor가 실행 중일 때 dll이 연결된 dll 자체를 교체하는 것이 좋습니다! 어드바이저를 중지(버튼이 아닌)한 다음 dll을 교체하고 어드바이저를 다시 시작하려고 했습니까?

물론 테스트가 완료된 후 dll을 교체하려고 하는 이야기입니다.

그러나 분명히 당신의 전문적인 경험은 당신이 저지른 실수 후에

그리고 포럼 회원에 대한 잘못된 태도는 단어의 잘못을 찾기 시작하는 것이 더 유리합니다.

.

그리고 물론, 위대한 프로는 간단한 테스트를 하려고 하지 않았거나 ... 하거나 했습니다.

 
터미널이 시작되고 표시기가 템플릿에서 로드 될 때, 용어가 누락된 이력의 끝을 로드할 때 더 큰 규모(최대 -100 이상)에서 동일한 효과가 관찰되었습니다.
 
jartmailru >> :

물론 테스트가 완료된 후 dll을 교체하려고 하는 이야기입니다. 그러나 분명히 귀하의 전문적인 경험에 따르면 귀하가 저지른 실수와 포럼 회원에 대한 잘못된 태도 후에는 말로 잘못을 찾기 시작하는 것이 더 유리합니다.

아니요, 우리의 경험에 따르면 무엇이 위험에 처해 있는지 주의 깊게 알아내야 합니다. 그리고 "forumchanin"이 바보라면 아무 일도 일어나지 않습니다. 큰 소리로 이야기해서는 안됩니다. 그러나 이것이 그의 무지에 완고한 바보라면 - 여기 있습니다. 단어를 선택할 필요가 없습니다. 그리고 거짓말하지 마세요, 저는 실수를 하지 않았습니다. 당신과 달리.


따라서 내 Expert Advisor에서 DLL이 올바르게 작동합니다. 다섯 번째로, 그리고 마지막으로 보고합니다. 아마도 당신과 같지 않은 회색 dll과 같은 다른 dll이 있을 것입니다.

 
alsu >> :

정확한 코드를 재현할 수는 없지만 다음과 같았습니다.

빠른 시장에서 초당 여러 틱이 올 때 이러한 코드는 경고에서 시퀀스 i=0,i=-1,i=-2,i=-3을 제공합니다(터미널이 동안 몇 틱을 불었는지에 따라 start()) 그런 다음 다시 i=0입니다.

놓친 틱 - 그들과 함께 지옥에 발생합니다. 그러나 이것이 발생하는 경우 프로그램이 조건부 명령을 건너뛰어야 한다는 의미는 아닙니다. 실제로 코드에서 두 번 발생합니다(for 루프도 본질적으로 분기 명령임).

나를 혼란스럽게 한 첫 번째 게시물에서 인용했듯이 0이 아닌 i>=1 주기의 조건으로 정제하면 의심이 제거됩니다. 나는 이미 당신도 ... 아팠다고 생각했습니다.

조건 점프? 시원한. 절대 일어나지 않았다. 이 마법의 dll은 무엇입니까? )))

결과를 재현할 수 있습니까? 그리고 dll 자체를 살펴보십시오. 내가 그것을 믿지 않는다는 것이 아닙니다. 저는 단지 그러한 dll을 작성하는 방법을 배우고 싶을 뿐입니다. 모든 것이 뒤집히도록. 나중에 똑똑한 사람들과 할 이야기가있을 것입니다 ...

 
HideYourRichess >> :

따라서 내 Expert Advisor에서 DLL이 올바르게 작동합니다. 다섯 번째로, 그리고 마지막으로 보고합니다. 아마도 당신과 같지 않은 회색 dll과 같은 다른 dll이 있을 것입니다.

놀라운! 당신은 이미 새로운 수준, 즉 추상화 수준에 도달했습니다.

아마도 무역에서 사람들과 함께 일한 경험이 있을 것입니다.

.

잘. 비슷한 논거를 사용해보자. 당신이 내 주장을 받아 들인 것을 매우 기쁘게 생각합니다.

내 경우에는 내 DLL이 훨씬 더 올바르게 작동한다는 것을 모든 사람에게 확인해야 합니다.

어쨌든 결과는 Neuroshell 메타 트레이더 및 Dll 테스터의 결과와 일치했습니다.

.

하지만 간단한 테스트를 하고 답장을 보낼 수 없는 사람으로서 더 이상 대답하지 마십시오.

대중을 제외하고.