2011-09-22 8 views
2

파일 (다른 형식, 예 : csv, txt, xls, ...)에서 데이터를 가져 오기 위해 dll을 생성하고 싶습니다. 내 생각은 이것입니다 : dll은 "엔진"으로 데이터를로드 한 다음이 데이터를 내 응용 프로그램에 보내 응용 프로그램이 그리드 내부에이를 표시 할 수있게합니다.Delphi에서 TDataset과 Dll을 사용하는 방법

몇 가지 문제점/질문이 있으므로이 DLL은 두 번째 DLL입니다.

내 DLL이 내 응용 프로그램의 TDataset에 데이터를 보내야한다고 생각하지만 TDataset을 인수로 사용하여 DLL을 호출하는 방법은 무엇입니까?

제안 사항? 내가 생각한 것을 성취하는 가장 쉬운 방법은 무엇입니까? (가능한 경우)

+0

왜 dll을 사용하고 있습니까? – Misha

답변

0

데이터를 DLL에 데이터베이스에 직접 저장하는 것이 더 쉬운 방법입니다. 그리고 가져온 후에 TDataset을 새로 고칩니다.

"DLL을"호출하지 않으면 DLL에서 공용 메서드를 호출하고 일반 메서드처럼 인수를 사용할 수 있습니다.

편집 : 당신이 그 DLL 년대의 창조자 경우 단지 구조체

TMyData 
{ int ID; 
    String Value; 
}; 

int MyDataImport(TMyData & data) 
{ 
... 
} 
+0

예, 이것은 방법이며 다른 솔루션을 찾지 못하면 내가 할 것이라고 생각합니다. 그러나 응용 프로그램에서 데이터를 추출하고 DLL에서 점을 보내고 싶습니다. 이런 식으로 사실 내 DLL은 일반 DLL이 될 것이고 나는 (다른 데이터베이스 엔진을 사용하는) 다른 프로젝트에서 사용할 것이다. 예, DLL이 아니라 DLL의 함수를 호출 할 수 있습니다 :) 죄송합니다. – Martin

+0

모두 동일한 데이터를 사용하지 않는 한이 DLL을 다른 프로젝트의 일반적인 DLL로 사용할 수는 없습니다. – Riho

+0

좋아,하지만 내 경우에는 필자의 데이터가있다. (행과 열이있는) 그리드를 보내야한다 ... 가능하다면 델파이 코드 만 사용해라. – Martin

3

에 데이터를 전송하는 데이터의 구성 요소를 필요로하지 않는 더 일반적인 DLL을 위해 그 대신 DLL의 패키지를 사용하는 것이 좋습니다. 이렇게하면 일반적인 DLL API 인 Delphi RTTI와 같은 문제를 피할 수 있습니다. 그런 다음 패키지간에 클래스를 적절하게 분할하고 패키지를 정적 또는 동적으로로드하고 가져 오기 엔진을 구현하는 클래스에 대한 참조를 가져오고 데이터 세트 참조를 매개 변수 값으로 사용하여 해당 메소드를 호출해야합니다.

+0

형식을 모두 알고있는 경우 실제로 이것은 권장됩니다. 비슷한 프로젝트에서 동적으로로드 된 DLL을 사용했습니다. 그래서 일부 사용자는 자신의 데이터 형식을 가져 오거나 내보낼 필요가 있습니다. 그런 다음 새 DLL을 작성하여 보내고 대신이 DLL을로드하도록 프로그램을 구성합니다. – Riho

관련 문제