dll에서 함수 호출 및 결과 반환 - 페이지 5

 
보호됨 - 좋음, 매우 나쁨 - 나쁨. 그리고 dll을 호출하는 기능으로 dll이 보호되는 것은 무엇입니까? 스마일 물론 dll과 td를 호출하는 것을 금지하는 것은 가능합니다. 등. 전문가의 파일 디렉토리에 실행을 위한 많은 작업을 던져서 전문가가 분류하고 실행할 수 있도록 하려는 아이디어가 있었을 때 저는 FindFirst와 FindNext가 필요했습니다. 그것은 그림으로 밝혀졌습니다.
 
그리고 dll을 호출하는 기능으로 dll이 보호되는 것은 무엇입니까? :)

설정을 살펴보십시오. 모든 것이 비활성화되어 있습니다(DLL은 기본적으로 비활성화되어 있음).

 
내 dll을 연결했을 때를 압니다. dll 가져오기 가 허용된다면 어떤 종류의 보호를 말하는 것입니까?
 
_default_에 의해 DLL에서의 모든 가져오기는 _totally_disabled_입니다. 이것은 보호입니다.
누군가 외부 DLL 을 사용하려면 "각 DLL 함수 호출 확인" 버튼을 켜고 거기에서 호출되는 항목을 확인하면 됩니다. 이것은 또한 보호입니다. /history 및 /files 디렉토리에만 액세스하여 모든 내장 파일 작업을 보호합니다.
 
2 마이크: 어리석은 질문에 대해 죄송합니다. 델파이에서 컴파일된 dll을 실행할 수 없습니다. Pol도 비슷한 문제( "배열과 문자열을 DLL(Delphi)에 전달" )에 직면했지만 아무도 그에게 대답하지 않았습니다. 어떻게 해냈는지 알려주실 수 있나요?
 
그리고 무엇이 문제입니까? 다음은 작동하는 dll의 예입니다(관련 없는 것은 모두 버렸음).

라이브러리 MetaDLL;

용도
시스템 유틸리티,
클래스,
창문;

{$R *.res}

{-----초기화---------------------------------------- ------ ----------}
절차 InitDllData(통화 이름: PChar); 표준 호출;
시작하다
// 뭔가를 하다
끝;

{-----완료------------------------------------- ------ --------------}
프로시저 FreeDllData; 표준 호출;
시작하다
// 뭔가를 하다
끝;

{-----프로세스 틱------------------------------------------ ------------------}
프로시저 ProcessTick(CurrencyName: PChar; 입찰, 요청: 이중, 시간: 정수); 표준 호출;
var
f:파일;
날짜 시간:TDateTime;
시작하다
노력하다
AssignFile(f, WorkDir + CurrencyName + '.tik');
노력하다
리셋(f, 1);
제외하고
다시 쓰기(f, 1);
끝;

노력하다
날짜시간 := MTTimeToNormal(시간);
탐색(f, 파일 크기(f));
BlockWrite(f, DateTime, sizeof(DateTime));
BlockWrite(f, 입찰가, sizeof(입찰));
마지막으로
닫기 파일(f);
끝;
제외하고
//
끝;
끝;


수출
ProcessTick, InitDllData, FreeDllData;

끝.

모든 기능을 stdcall로 설정하고 표준 Windows 유형(문자열은 PChar로만 사용)만 사용하고 내보내기 지시문에 내보낸 모든 기능 을 지정하는 것을 잊지 마십시오. 그러면 만족할 것입니다.

네, 그리고 전문가에서 dll 사용을 허용하는 방법에 대해 Renat이 게시한 사진도 참조하세요.
 
나는 또한 dll이 <metatrader>\experts\libraries\ 디렉토리에 있어야 하고 전문가 코드에서 다음과 같이 연결되어야 한다는 것을 추가하는 것을 잊었습니다.

#가져오기 "MetaDLL.dll"
무효 ProcessTick(문자열 CurrencyName, 이중 aBid, 이중 aAsk, int aTime);
무효 InitDllData(문자열 CurrencyName);
무효 FreeDllData();

그런 다음 이미 모든 기능을 가져올 수 있습니다.
 
도와 주셔서 감사합니다. 배열이 단순히 dll에서 호출된 함수의 매개변수로 잘못 호출된 것으로 밝혀졌습니다.
 
그리고 무엇이 문제입니까? 다음은 작동하는 dll의 예입니다(관련 없는 것은 모두 버렸음).

라이브러리 MetaDLL;

용도
시스템 유틸리티,
클래스,
창문;
...


또 다른 어리석은 질문에 대해 죄송합니다. 이 DLL에서 VCL을 사용할 수 있습니까? 그런 다음 "form" ddl에 연결하면 MetaTrader가 시작될 때(또는 해당 어드바이저가 연결될 때)에도 "오류"와 함께 충돌합니다.
저는 사실 TDatabase, TDataSource, TQuery에만 관심이 있습니다.
 
2 마이크
역사에 대해 연습할 수 있는 에뮬레이터에 관심이 많았습니다. 불행히도 내가 아는 한 MT는 그렇게 하지 않을 것입니다. 내가 이해하기로는 Forex에서 좋은 돈을 벌기 때문에 당신은 정말로 그것을 팔고 싶지 않습니다. 그러나 나는 오랫동안 인터넷에서 비슷한 것을 찾고 있었지만 지금까지는 성공하지 못했습니다. 당신이 내가 당신의 개발을 사용할 수 있도록 허락해 주시면 기쁠 것입니다. 제 경우에는 MTS를 제공할 수 있습니다. 아마도 이것이 귀하가 관심을 가질 수 있는 유일한 것입니다.
협력을 바랍니다, 알렉산더. f1-forum@mail.ru