함수를 가지고 BPL 함수에서 문자열을 반환, 그는 LoadPackage와 메인 프로그램에서의로드 BPL아래 단순화
function DoA(amount: currency; var Info: string): Currency; stdcall;
begin
result := amount * 19;
Info:= 'Some Text about the result';
end;
에서 수출되고 다른 기능 잘 작동 GetProcAddress를. 하지만이 코드는 호출 할 때 많은 오류가 발생합니다.
BPL은 간체
bplhandle: HModule;
BPLDoA: function (amount: currency; var Info: string): Currency; stdcall;
intoStr : string;
함께 사용된다.
begin
bplhandle:=LoadPackage('test.bpl');
if bplhandle <> 0 then
begin
@BPLDoA:=GetProcAddress(bplhandle,'DoA');
if assigned(BPLDoA) then
result := BPLDoA(123, intoStr);
end;
end;
intoStr에 반환되는 절차 하지만 수정 된 텍스트의 끝에 일어날 것으로 보인다 예외 오류가 정보와 아무 것
(중단 점으로 볼 때) var 및/또는 문자열이되는 param?
오류 메시지가
이 프로젝트 만들기 Project1.exe 메시지 '잘못된 포인터 작업'
덕분에 예외 클래스 EInvalidPointer을 발생
대한 추가 정보를 원하시면> 같은 BPL에서 다른 기능/단위는 잘 작동합니다.
function DoB(amount: currency): Currency; stdcall;
result := amount * 19;
end;
>
예외 클래스를 제외하고
미친 : EInvalidPointer 예외 메시지 : 잘못된 포인터 작업.
메인 스레드 ($의 1b7c) 0040276f 013 만들기 Project1.exe 시스템 @FreeMem 00,404,650 + 01C 만들기 Project1.exe 시스템 @LStrClr 00,483,814 + 15C 만들기 Project1.exe 유니트 1 97 +11 TForm1.Button3Click 00,462,430 064에서 Project1 .EXE는 TControl.Click 0045a870 + 01C 만들기 Project1.exe StdCtrls TButton.Click이
당신의 양이에는 "VAR"가 없습니다 – Treby
죄송이 예는 않습니다 –