[fpc-devel] MoveChars - docs.embarcadero.com ...

silvioprog silvioprog at gmail.com
Sun Jul 22 21:02:25 CEST 2012


2012/7/22, Jonas Maebe <jonas.maebe at elis.ugent.be>:
> On 22 Jul 2012, at 20:18, silvioprog wrote:
>
>> 2012/7/22, Jonas Maebe <jonas.maebe at elis.ugent.be>:
>>>
>>> On 22 Jul 2012, at 04:54, silvioprog wrote:
>>>
>>>> There MoveChars* function (or similar) native on Free Pascal?
>>>>
>>>> (*) -
>>>> http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/System_MoveChars.html
>>>
>>> As far as I can tell,
>>>
>>>  MoveChars(Source,Dest,Length);
>>>
>>> is exactly the same as
>>>
>>>  Move(Source,Dest,Length*2);
>>
>> Hm... I think that MoveChars copy a string to another string, but
>> maintaining the contents of the second string (I'm without delphi for
>> test it).
>
> MoveChars just moves data. It has no special support for strings or anything
> else. See the example code on the Embarcadero site.
>
>> So, I'll try to explain my problem ...
>>
>> I am needing to move a string to another string, eg:
>>
>> var
>>  d, s: string;
>> begin
>>  d := 'the on the table';
>>  s := 'books ';
>>  SetLength(d, Length(d) + Length(s));
>>  Move(s, d[4], Length(s));
>
> This moves the contents of the string pointer (I suppose you are in a mode
> where string=ansistring), you have to use s[1] instead.
>
>>  writeln(d); // the result should be 'the books on the table', but I
>> get 'the|?S  |?e table  ?'
>
> What you want is
>
> var
>  d, s: string;
> begin
>  d := 'the on the table';
>  s := 'books ';
>  insert(s,d,4);
>  writeln(d);
>
>> end;
>> I could easily do this using "copy", but I'm trying (without success)
>> to do this at low level.
>
> I would strongly recommend against it. You'll mainly run into problems by
> combining reference counted data and low level routines. The RTL versions
> already use the low level routines in the correct ways.
>
>
> Jonas

I'll use Insert, because now I can see what is really recommended. :)

Thank you again Jonas!

-- 
Silvio Clécio
My public projects - github.com/silvioprog



More information about the fpc-devel mailing list