Einzelnen Beitrag anzeigen

JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#5

Re: Parameterprobleme beim Aufruf einer Delphi DLL aus C#

  Alt 27. Okt 2009, 09:08
Guten Morgen,

erstmal vielen Dank für deine Hilfe.

Du hast vollkommen Recht, der Aufruf klappt auch, der Fehler liegt in der Delphi Funktion.

Die sieht momentan so aus:

Delphi-Quellcode:
procedure getProfile(Intf: IUnknown); stdcall;
const
  pbGlobalProfileSectionGuid : TMAPIUID = (ab:($13,$DB,$B0,$C8,$AA,$05,$10,$1A,$9B,$B0,$00,$AA,$00,$2F,$C4,$5A));
var
  lppprofsect : Iprofsect;
  propProfile : PSPropValue;
  value : String;
  hr : Hresult;
  session : IMapiSession;
begin
  value:='';
  
  Intf.QueryInterface(IID_IMAPISession, session);
  
  hr:=session.OpenProfileSection(PMAPIUID(@pbGlobalProfileSectionGuid),IID_IProfSect,MAPI_MODIFY, lppProfSect);
  if (hr = S_OK) then
  begin
    propprofile:=nil;

    if (S_OK = HrGetOneProp(lppprofsect, PR_PROFILE_NAME, propProfile)) then
      value:=propprofile.value.lpsza;

    if assigned(propprofile) then
      mapifreebuffer(propprofile);
    propprofile:=nil;
  end
  else
    if (hr<>S_OK) then
    begin
    end;

  lppProfSect:=nil;

  ShowMessage(value);
end;
Problem ist das folgende Zeile NICHT die IMapiSession liefert.
Intf.QueryInterface(IID_IMAPISession, session); Deswegen knallt es dann bei "OpenProfileSection" weil session nil ist.

Hast du da noch eine Idee woran das liegen könnte?

Ausserdem möchte ich eine andere Fragen nochmal wiederholen, ist es möglich
die Delphi DLL zu debuggen? Es ist immer relativ umständlich zu Debugzwecken
immer MessageBoxen einzubauen.



Gruss Jonny
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat