Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi GetMem, TMapiRecipDesc und Delphi 2006 (https://www.delphipraxis.net/64323-getmem-tmapirecipdesc-und-delphi-2006-a.html)

gklapper 2. Mär 2006 08:25


GetMem, TMapiRecipDesc und Delphi 2006
 
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]

Flocke 2. Mär 2006 08:53

Re: GetMem, TMapiRecipDesc und Delphi 2006
 
Genau so ist es: du brauchst das GetMem nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz