Hallo,
ich nutze die
JEDI Api Headers seit 2008 zum Zugriff auf WinInet-Funktionen. Bis vor kurzem hatte ich eine Version von April 2008, welche jahrelang anstandlos funktioniert hat. Ich habe damals direkt JwaWinInet eingebunden.
Neulich habe ich mir die aktuelle Version der
Jedi-
Api-Headers heruntergeladen und installiert. Gemäß Anleitung habe ich jetzt nur noch ein JwaWindows und habe meine uses entsprechend angepaßt.
Wenn ich jetzt in meinem Programm ein
hInet:=InternetOpen(PChar(sUserAgent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0)
aufrufe, dann komme ich in JwaWinType
Delphi-Quellcode:
procedure GetProcedureAddress(var P: Pointer; const ModuleName, ProcName: AnsiString);
var
ModuleHandle: HMODULE;
begin
if not Assigned(P) then
begin
ModuleHandle := {$IFDEF JWA_INCLUDEMODE}jwaWinType_GetModuleHandle
{$ELSE}GetModuleHandle
{$ENDIF JWA_INCLUDEMODE}
(PAnsiChar(AnsiString(ModuleName)));
if ModuleHandle = 0 then
begin
ModuleHandle := {$IFDEF JWA_INCLUDEMODE}jwaWinType_LoadLibrary
{$ELSE}LoadLibrary
{$ENDIF JWA_INCLUDEMODE}(PAnsiChar(ModuleName));
if ModuleHandle = 0 then
raise EJwaLoadLibraryError.CreateFmt(RsELibraryNotFound, [ModuleName]);
end;
P := Pointer({$IFDEF JWA_INCLUDEMODE}jwaWinType_GetProcAddress
{$ELSE}GetProcAddress
{$ENDIF JWA_INCLUDEMODE}(ModuleHandle, PAnsiChar(ProcName)));
// --> P ist NIL, d. h. die WinInet.Funktion InternetOpen kann mit GetProcAdress nicht ermittelt werden...
if not Assigned(P) then
raise EJwaGetProcAddressError.CreateFmt(RsEFunctionNotFound, [ModuleName, ProcName]);
end;
end;
und kriege am Ende eine
Exception.
Was läuft da schief?
Edit:
Ich habe gerade gemerkt, daß wenn ich die dynamic-version der JWAPI nehme, der Fehler kommt aber nicht bei der Static. Also
$(Komponenten)\JediWindowsApiHeaders\jwapi\
Package s\bds11\bin\release\static im Suchpfad funktioniert nicht aber
$(Komponenten)\JediWindowsApiHeaders\jwapi\
Package s\bds11\bin\release\dynamic.
Was ist hier der Unterscheid?
Ich nutze Windows 7 x64 mit Delphi 2007.
Grüße
Stefan Westner