Einzelnen Beitrag anzeigen

Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#1

Änderungen von XE3 zu XE4

  Alt 13. Jul 2013, 13:31
Delphi-Version: 5
Ich habe gerade die DragAndDrop Komponenten für XE4 überarbeitet. Dabei habe ich ein paar Probleme:

Methoden-Variablen können nicht mehr auf nil geprüft werden, ist das richtig?

Delphi-Quellcode:
var
  _CopyStgMedium: function(const cstgmedSrc: TStgMedium; var stgmedDest: TStgMedium): HResult; stdcall = nil;

  if (@_CopyStgMedium = nil) then

  ist jetzt

  if not Assigned(@_CopyStgMedium) then

DWORD muss durch CppULongInt ersetzt werden, wenn man einen Pointer darauf haben möchte?

Delphi-Quellcode:
var
  SubKey: HKey;
  NumSubKeys, NumValues: DWORD; ---> CppULongInt
  p: PChar;
begin
  p := nil;
  repeat
    Result := False;
    if (RegOpenKey(HKEY_CLASSES_ROOT, PChar(Key), SubKey) = ERROR_SUCCESS) then
      try
        Result := (RegQueryInfoKey(SubKey, nil, nil, nil, @NumSubKeys, nil, nil,
          @NumValues, nil, nil, nil, nil) = ERROR_SUCCESS);


GetProc spinnt

Delphi-Quellcode:
    GetProc('MAPIGetDefaultMalloc@0', @MAPIGetDefaultMalloc);

ersetzt durch

    @MAPIGetDefaultMalloc := GetProcAddress(MAPI32, 'MAPIGetDefaultMalloc@0');

hier komme ich nicht weiter
kommt
[dcc32 Fehler] DragDropInternet.pas(1554): E2010 Inkompatible Typen: 'Pointer' und 'TMAPIAllocateBuffer'

Delphi-Quellcode:
type
  TMAPIAllocateBuffer = function(cbSize: ULONG; var lppBuffer: pointer): SCODE; stdcall;

var
  MAPIAllocateBuffer: TMAPIAllocateBuffer = nil;
  ...

    OleCheck(OpenIMsgOnIStg(FSession,
      @MAPIAllocateBuffer,
      @MAPIAllocateMore,
      @MAPIFreeBuffer,
      IMalloc(MapiGetDefaultMalloc),
      nil,
      FStorages[Index],
      nil, 0, 0,
      Result));
Sven Harazim
--
  Mit Zitat antworten Zitat