[fpc-pascal] How do I do this safely?
    Marco van de Voort 
    marcov at stack.nl
       
    Fri Oct 15 19:41:15 CEST 2004
    
    
  
> I am trying to write code that will compile cleanly in current and
> future versions of FPC (in mode Delphi) and Delphi on 32- and 64-bit
> platforms.  I need to store strings and their floating point rankings
> in a list and I was advised to use the single type and store them in
> the TStringList.Objects list, using a cast to store and retreive the
> values.  
> 
> SL := TstringList.Create;
> rank := 0.95;
> title := 'This is a string';
> SL.AddObject(title,pointer(rank));
> 
> This feels unsafe.. I'd hate to have to come back later to debug why
> the ranks have become completely garbled on a new platform or
> version.
> 
> Should I convert ranks to an integer (slightly awkward)?  Or just
> create a trivial class to hold ranks as objects (seems like
> overkill)? Or...?
Allocate space for it.
var p : ^real;	// extended/double whatever
  // assuming sl exists.
begin
 new(p);
 p:=0.95
 sl.addobject('this is a string',rank);
However this means you must destroy it when deallocating/destroying the list.
Something like
if sl.count>0 then
  for i:=0 to count-1 do
	dispose(sl.objects[i]);
in your destructor.
    
    
More information about the fpc-pascal
mailing list