[fpc-pascal] Basic question about TStringList

Andreas Berger Andreas at TheBergerClan.org
Thu Mar 27 12:35:45 CET 2008


>> Hi,
>>
>> I seek help to clarify a very basic use of TStringList.
>>
>> Let A and B be TStringLists. What is the difference between:
>>
>> A:=B;
>>
>> and
>>
>> A.Assign(B); ?
>>     
>
> That's more a basic(?) question about Pascal.
>
> When you do A:=B; then A has become equal to B. That means for example
> that if you add an new string to B, this new string will also be in A.
> After all A and B are the same. 
>
> Note that if A contained a TStringList that you can not acces it anymore
> through A, but it's still present in memory.
>
> When you do A.Assign(B); then all strings in A are cleared and
> afterwards all strings in B are copied to A. Further all relevant
> properties of B are also set to A.
>
> Note that in this case, A should already contain a TStringList, and if
> you add values to B after the assignment, those strings will not appear
> in B.
>   
In other words: When you declare
   A, B : TStringList;
you actually allocated two pointer to TStringList since classes are 
inherently pointers. When you do "A:=B" you now have A pointing to the 
same memory space as B. It's a pity you can't do "A^ := B^;"

Andreas




More information about the fpc-pascal mailing list