Mattias Gaertner schrieb:

procedure TCustomComboBox.UpdateSorted;
var
  lText: string;
  lIndex: integer;
begin
  if HandleAllocated then
    TWSCustomComboBoxClass(WidgetSetClass).Sort(Self, Items, FSorted)
  else if FItems is TStringList then
  begin
    // remember text
    lText := Text;
    TStringList(FItems).Sorted := FSorted;

When not FSorted then items are not sorted.

You're right.

But the following then is also evitable (but does no harm):

    lIndex := FItems.IndexOf(lText);
    if lIndex >= 0 then
      ItemIndex := lIndex;

What if lIndex=-1?

  end;
end;


I stumbled across more such near-wrong code and comments, not worth bug reports (in customcombobox.inc):

line 55:
  if FSelStart <> FSelLength then
Why not: if FSelLength > 0?

line 183:
{------------------------------------------------------------------------------
  Method: TCustomComboBox.DoChange
Not followed by DoChange - should be moved, removed or corrected

line 675:
  // ToDo
Looks like Done (in InitializeWnd)

line 737:
{------------------------------------------------------------------------------
  function TCustomComboBox.GetDroppedDown: Boolean;
Should read "SetDroppedDown" - complete or remove

line 1064:
    Result := FReadOnly <> false;
Should read: Result := FReadOnly;


Another (general) one:

I found sometimes wrong descriptions for ...Length of strings, mentioning *byte* count instead of count in *logical* UTF-8 chars. How should such descriptions finally read?

1) Should a logical character count be implied, so that only really different (byte/AnsiChar) counts should be mentioned explicitly?

2) Should count in [logical?] [UTF-8?] characters be mentioned wherever applicable? [what about possible future change to Unicode/UTF-16?]

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to