[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