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]