[lazarus] Possible bug in FPC or in Lazarus?
Martin Smat
martin.smat at tiscali.cz
Thu Dec 19 12:48:36 EST 2002
Hi,
Look at the procedure TCustomListBox.CreateHandle:
procedure TCustomListBox.CreateHandle;
var
NewStrings : TStrings;
i: integer;
begin
inherited CreateHandle;
CNSendMessage(LM_SETBORDER, Self, nil);
UpdateSelectionMode;
(1) UpdateSorted;
NewStrings:= TStrings(Pointer(CNSendMessage(LM_GETITEMS, Self, nil)));
NewStrings.Assign(Items);
for i:=0 to Items.Count-1 do begin
if clbiSelected in GetListBoxItemRecord(FItems,i)^.Flags then
SendItemSelected(i,True);
end;
FItems.Free;
FItems:= NewStrings;
CNSendMessage(LM_SETITEMINDEX, Self, Pointer(FItemIndex));
end;
Line (1) UpdateSorted sends LM_SORT message which works with
TGtkCListStringList (in GTK) or with TWin32CListStringList (in Win32)
object. These classes are descendands of class TStringList.
In constructor TCustomListBox.Create is line
FItems := TExtendedStringList.Create(...). TExtendedString is descendand
of class TStringList too.
So we have folowing classes:
TStringList
|
|---TWin32CListStringList
|
|---TExtendedString
When processing the LM_SORT message in interface, there is this
typecasting (symplified):
TWin32CListStringList(FItems).Sorted:=...
This line calls TWin32CListStringList.SetSorted method.
On this line crashes the listboxtest.pp example. I think it is because
of calling the SetSorted method. This method is not in TExtendedString
class.
Listboxtest example ends with "Unknown Run-Time Error : 217". (tested in
Win32)
If you still don't know what I'm speaking about compile my attached demo
and run it. It ends with Run-Time error 216. I don't know why once it is
error 216 and once 217. Maybe someone from FPC team can answer this.
Martin Smat.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: zip00007.zip
Type: application/octet-stream
Size: 371 bytes
Desc: "bugfpc.zip"
Url : http://localhost/pipermail/lazarus/attachments/20021219/a52abbf4/zip00007.obj
More information about the Lazarus
mailing list