Haven't got into the details of your problem, but here is an article which goes into the details of array of const.
http://rvelthuis.de/articles/articles-openarr.html Hope it helps, Cheers, Colin On 25 August 2011 09:40, David Moorhouse (DUG) <del...@moorhouse.net.nz> wrote: > I have the following code snippet > > <code> > type > PConstArray = ^TConstArray; > TConstArray = array of TVarRec; > > function CreateConstArray(const Elements: array of const): TConstArray; > > type > TLogType = (ltError, ltWarn, ltInfo); > PLogData = ^TLogData; > TLogData = record > LogType: TLogType; > LogArgs: TConstArray; > end; > > .... > > procedure TUserClass.Log(const LogType: TLogType; const Args: array of > const ); > var > LogData: PLogData; > begin > // size of record TLogData does not work > GetMem(LogData, sizeof(TLogData)); > LogData.LogType := LogType; > // blows up on next line > LogData.LogArgs := CreateConstArray(Args); > // ... do some other stuff with the LogData item finally calling FreeMem > end; > > function CreateConstArray(const Elements: array of const): TConstArray; > var > I: Integer; > begin > SetLength(Result, Length(Elements)); > for I := Low(Elements) to High(Elements) do > Result[I] := // assign a TVarRec here > end; > </code> > > The code that assigns the memory only assigns 8 bytes - and an access > violation ensues. If I replace the call to "sizeof" with the number 16, > the code works fine. > > My understanding of dynamic arrays was that the compiler created a 4 byte > field before the first element that contained the length of the array. > > So why does the sizeof function not reflect this ? And why do I need 16 > bytes not 12 (4 for LogType + 4 for length of array + 4 for array > pointer)? > Also regardless of the number of items in the open array parameter, 16 > bytes works, so it does not relate the length of the TConstArray. > > Your thoughts ? > > David > > > > _______________________________________________ > NZ Borland Developers Group - Delphi mailing list > Post: delphi@delphi.org.nz > Admin: http://delphi.org.nz/mailman/listinfo/delphi > Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: > unsubscribe > _______________________________________________ NZ Borland Developers Group - Delphi mailing list Post: delphi@delphi.org.nz Admin: http://delphi.org.nz/mailman/listinfo/delphi Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: unsubscribe