[DUG] String Concatenation
Rohit Gupta
r.gupta at xtra.co.nz
Fri Nov 4 14:19:00 NZDT 2005
John,
no, I escaped to D7 as fast as I could :-)
There were other problems with D5 to do with clientdataset.
John Bird wrote:
>That might explain something I found once when code in D5 like
>
> teststr:=uppercase(trim(line));
>
>Would produce unpredictable stuff in the string teststr in one program
>consistently, yet if I removed the trim or prcessed the string a different
>way it worked, yet this sort of code works in other places as expected.
>
>Do you have references to what to look out for in D5?
>
>John
>
>
>-----Original Message-----
>From: delphi-bounces at ns3.123.co.nz [mailto:delphi-bounces at ns3.123.co.nz] On
>Behalf Of Rohit Gupta
>Sent: Friday, 4 November 2005 12:51 p.m.
>To: NZ Borland Developers Group - Delphi List
>Subject: Re: [DUG] String Concatenation
>
>
>You havent mentioned what version you are using. D5 has a severe
>problem where it gets confused between shortstring and ansistring. It
>just shows up at random, when you examine the assembler code, you can
>see the fault. The only solution I found was to explicitly declare
>ansistring and shortstring instead of using string. Of course thsi
>still stuffs up because all vcl uses string.
>
>I havent had any problems with D7 or D2005.
>
>You dont have any timers or events stuffing things up ?
>
>Note you really wanted maxDataIndex-1
>
>Allan, Samuel wrote:
>
>
>
>>We have a weird problem where we are building a string up. It is quite
>>a large string, but not exceptionally large. About maybe 1000
>>characters. The code to create the string approximates:
>>
>>insertString, finalString: string;
>>
>>for i := 0 to maxDataIndex do
>> insertString := insertString + dataItem[i];
>>
>>finalString := CONSTANT_A + insertString + CONSTANT_B + insertString +
>>CONSTANT_C;
>>
>>Without throwing an overflow warning or any other warning, this code
>>results in a finalString where the first instance of insertString is
>>whole and complete. The second instance is interrupted half-way by
>>what looks like a random memory dump, and there is no CONSTANT_C
>>afterwards. insertString remains pristine and untouched.
>>
>>We have also tried several variations on the above code:
>>
>>Using Copy() to create two additional strings, one for each insert.
>>Same result for finalString, both additional insert strings are fine.
>>
>>Putting placeholder tokens in the finalString, then running
>>StringReplace(). Same result.
>>
>>We tried to isolate the code in a separate application. The separate
>>application works fine, as you would expect. So we think it may be
>>something to do not with the code itself, but with the structure of
>>our application. However, code like this is widely used within this
>>application and elsewhere works fine.
>>
>>Our application implicitly compiles several packages into itself. The
>>code in question is in one of these packages. So compiling any change
>>to it requires compiling the package, then compiling the application.
>>
>>We have searched the web, and found an exact match for this posted in
>>some newsgroup in 1998, but there were no responses. The match does
>>not mention packages however.
>>
>>
>>-----------------------------------------------------------------------
>>-
>>
>>_______________________________________________
>>Delphi mailing list
>>Delphi at ns3.123.co.nz http://ns3.123.co.nz/mailman/listinfo/delphi
>>
>>
>>
>>
>
>
>_______________________________________________
>Delphi mailing list
>Delphi at ns3.123.co.nz http://ns3.123.co.nz/mailman/listinfo/delphi
>
>_______________________________________________
>Delphi mailing list
>Delphi at ns3.123.co.nz
>http://ns3.123.co.nz/mailman/listinfo/delphi
>
>
>
>
>
More information about the Delphi
mailing list