Question: I get an exception:"Variant or safe arrays out of bounds" on selecting any records sorted by "ORDER BY [NAME]" (in Kylix 3). What should I do?
Answer: This is Kylix bug. Do each of the below-mentioned steps, otherwise the error will remain.
- {$KYLIX} is a subdirectory where the IDE is installed (i.e. /home/svd/kylix3 by default). Completely delete this directory with the old FIBPlus version and all *.so,*.dcu,*.dpu files of this library (if there are any in another directory.
- Open the console under User name (not root).
- Find the file {$KYLIX}/source/rtl/sys/VarUtils.pas, and change two lines in the line 1499:
.....
Result^.Bounds[LDim].ElementCount := Bounds[DimCount - LDim - 1].ElementCount;
Result^.Bounds[LDim].LowBound := Bounds[DimCount - LDim - 1].LowBound;
....
replace by
.....
Result^.Bounds[DimCount - LDim - 1].ElementCount := Bounds[DimCount - LDim -1].ElementCount;
Result^.Bounds[DimCount - LDim - 1].LowBound := Bounds[DimCount - LDim - 1].LowBound;
......
- Close the editor, saving all the changes and compile the module from the command line:
>../../../bin/dcc VarUtils.pas
After this you will see the file VarUtils.dcu in this directory. Simply COPY (!) it to the directories {$KYLIX}/lib and {$KYLIX}/lib/debug, by replacing the existing files there.
- Go to {$KYLIX}/source/rtl/
- Find the file GNUmakefile, open it in the editor, stand on line 26 and replace the BINDIR variable value by the one, used in {$KYLIX} (that is the directory with the Kylix installation)
- Close the editor and execute
>make
Then you will see the second package file, simply leave it, as it's not necessary .
- Go to the subdirectory {$KYLIX}/bin, find the file "bplrtl.so.6.9.0" and replace it by "bplrtl_old.so.6.9.0". Then find "bplrtl_user.so.6.9.0" and rename it to "bplrtl.so.6.9.0".
- Run Kylix and install the new FIBPlus packag