Einzelnen Beitrag anzeigen

gklapper

Registriert seit: 2. Mär 2006
6 Beiträge
 
#1

GetMem, TMapiRecipDesc und Delphi 2006

  Alt 2. Mär 2006, 09:25
Ich kann in meiner App über ein eigenes E-Mail Formular E-Mails mittels MAPI versenden. Folgendes Codefragment aus meiner Senden-Prozedur:

Delphi-Quellcode:
var
  Recipients: array of TMapiRecipDesc;
  RecipientCount: Integer;

begin
...
  if RecipientCount>0 then
    begin
      SetLength(Recipients,RecipientCount);
      GetMem(Recipients, SizeOf(TMapiRecipDesc) * RecipientCount);
...
end

TMapiRecipDesc ist aus der Delphi MAPI unit und hat folgende Struktur:

MapiRecipDesc = packed record
    ulReserved: Cardinal; { Reserved for future use                  }
    ulRecipClass: Cardinal; { Recipient class                          }
                                { MAPI_TO, MAPI_CC, MAPI_BCC, MAPI_ORIG    }
    lpszName: LPSTR; { Recipient name                           }
    lpszAddress: LPSTR; { Recipient address (optional)             }
    ulEIDSize: Cardinal; { Count in bytes of size of pEntryID       }
    lpEntryID: Pointer; { System-specific recipient reference      }
  end;
  TMapiRecipDesc = MapiRecipDesc;
Oben genannten Code habe ich in Delphi7 entwickelt und er lief bisher immer klaglos. Nun bin ich auf Delphi2006 umgestiegen und der Compiler meckert auf einmal bei

GetMem(Recipients, SizeOf(TMapiRecipDesc) * RecipientCount);
[Pascal Fehler] SendEMailUnit.pas(258): E2008 Inkompatible Typen

Wenn ich die Zeile auskommentiere, funktioniert das Senden der E-Mail immer noch. Nun meine Frage: Benötige ich das GetMem an dieser Stelle überhaupt, oder wird nicht automatisch Speicher über das SetLength(Recipients,RecipientCount) allokiert?

Viele Grüße

Guido

[edit=sakura] [delphi]-Tags Mfg, sakura[/edit]
  Mit Zitat antworten Zitat