Thanks Colin The TVarRec and open array stuff come from Rudy's page - very helpful too :)
D > 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 > _______________________________________________ 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