Subject | RE: [IBO] IBO 5.11.1 Build 2861 is released. |
---|---|
Author | Jason Wharton |
Post date | 2019-07-19T21:55:20Z |
Here is a hotfix in $(IBO5)\source\core\IB_StringList.pas that
should clear up this issue.
procedure
TIB_StringList.Put( aIndex:
integer;
const aStr: string );
var
aLink: string;
oldLink: string;
aValue: string;
aRAl: string;
aCAl: string;
aRel: string;
aCol: string;
bOldSorted: boolean;
bVSep: boolean;
tmpLinkNode: TIB_LinkNode;
begin
if ( not AllowBlankLines ) and
( aStr = '' ) then
raise Exception.Create( 'Blank lines are not allowed.' );
if StoresLinks then
begin
SplitStrLinkValue( aStr, aLink, aValue, bVSep, NameValueSeparator );
SplitLinkNames( aLink, aRAl, aCAl, aRel, aCol );
tmpLinkNode := inherited GetObject( aIndex ) as TIB_LinkNode;
Assert( Assigned( tmpLinkNode ) and ( tmpLinkNode is TIB_LinkNode ));
tmpLinkNode.FIndexPos := aIndex;
oldLink := tmpLinkNode.Link;
tmpLinkNode.SetLinkNames( aRAl, aCAl, aRel, aCol );
tmpLinkNode.HasValueSeparator := bVSep;
if Sorted then
begin
try
bOldSorted := Sorted;
try
Sorted := false;
inherited Put( aIndex, aValue );
finally
FIgnoreSortRequest := IdentsMatch( aLink, oldLink );
Inc( FSuppressChangingEvents );
try
Sorted := bOldSorted;
finally
Dec( FSuppressChangingEvents );
end;
end;
finally
FIgnoreSortRequest := false;
end;
end
else
inherited Put( aIndex, aValue );
end
else
inherited Put( aIndex, aStr );
IncCurVersion;
end;
const aStr: string );
var
aLink: string;
oldLink: string;
aValue: string;
aRAl: string;
aCAl: string;
aRel: string;
aCol: string;
bOldSorted: boolean;
bVSep: boolean;
tmpLinkNode: TIB_LinkNode;
begin
if ( not AllowBlankLines ) and
( aStr = '' ) then
raise Exception.Create( 'Blank lines are not allowed.' );
if StoresLinks then
begin
SplitStrLinkValue( aStr, aLink, aValue, bVSep, NameValueSeparator );
SplitLinkNames( aLink, aRAl, aCAl, aRel, aCol );
tmpLinkNode := inherited GetObject( aIndex ) as TIB_LinkNode;
Assert( Assigned( tmpLinkNode ) and ( tmpLinkNode is TIB_LinkNode ));
tmpLinkNode.FIndexPos := aIndex;
oldLink := tmpLinkNode.Link;
tmpLinkNode.SetLinkNames( aRAl, aCAl, aRel, aCol );
tmpLinkNode.HasValueSeparator := bVSep;
if Sorted then
begin
try
bOldSorted := Sorted;
try
Sorted := false;
inherited Put( aIndex, aValue );
finally
FIgnoreSortRequest := IdentsMatch( aLink, oldLink );
Inc( FSuppressChangingEvents );
try
Sorted := bOldSorted;
finally
Dec( FSuppressChangingEvents );
end;
end;
finally
FIgnoreSortRequest := false;
end;
end
else
inherited Put( aIndex, aValue );
end
else
inherited Put( aIndex, aStr );
IncCurVersion;
end;
Please let me know if you need help applying this
hotfix.
In short, just change the code and then close Delphi and then
run the $(IBO5)\build\Build.cmd on the commandline.
Once the rebuild is complete, open up Delphi and get back to
work.
Thanks and sorry for this issue. The stringlist was
massively reworked, which is why I requested for beta testers on this
release. I wish this would have been caught then.
Kind regards,
Jason Wharton
From: IBObjects@yahoogroups.com [mailto:IBObjects@yahoogroups.com]
Sent: Friday, July 19, 2019 12:48 PM
To: IBObjects@yahoogroups.com
Subject: RE: [IBO] IBO 5.11.1 Build 2861 is released.
Thank you. I have already reproduced the problem and am
working on a solution.
It seems to have to do with the assignment of the second
parameter value appropriately due to the change in the SQL
statement.
This is a very unusual use case, but I will likely patch my
recent release so you won't have to wait until the next
release.
Kind regards,
Jason Wharton
From: IBObjects@yahoogroups.com [mailto:IBObjects@yahoogroups.com]
Sent: Friday, July 19, 2019 12:38 PM
To: IBObjects@yahoogroups.com
Subject: Re: [IBO] IBO 5.11.1 Build 2861 is released.
Hey Jason,
I was testing version 5.11.1, and found a problem with IBOQuery.
Just sen you a sample code in private, trying to reproduce the same problem.
This code works fine in 5.10
Thanks.