(11-30-2023, 10:38 PM)rlebeau Wrote:(11-30-2023, 11:20 AM)mondoedp Wrote: By example:
PosEx(':','C:\SVN\Mydirectory',3) return 2 (that is the right value if I call PosEx(':','C:\SVN\Mydirectory',1))
while it must return 0 (as 32-bit does).
That is something you need to report to Embarcadero, AToZed has no control over those RTL functions.
FWIW, I can't reproduce what you describe in Delphi 12. PosEx(':','C:\SVN\Mydirectory',3) returns 0 in 64bit, as expected.
Thanks Remy but, as I said, the normal behavior outside intraweb application works good.
The problem with PosEX happens in IW applications, so it's why I posted here the problem.
Now I'll try the patch as suggested by Jeroen.
Regards.
(12-01-2023, 09:54 AM)jeroen.rottink Wrote: Hi Albert,
Intraweb replaces the RTL functions Pos and PosEx for the 64-bit platform. This is done by IW_ApplyRTLPatch().
Code:// Std RTL functions Pos() and PosEx() are EXTREMELLY SLOW on x64
// This replaces them using the pure pascal FastCode version
// the new version is 5 to 10 times faster than the RTL version
All calls are redirected to IW.Common.Strings.IWPosEx.
That said. I tested it with IW15.4.2 on both 32-bit and 64-bit and both produce 0 as a result.
Calling IWPosEx directly also results in 0.
Attached my testcase.
Thanks Jeroen,
but it still doesn't work.
I think the bug was introduced in 15.5.x (in 15.3.12 it worked for sure).
Do you have the possibility to test your case with 15.5.2?
Regards

