Hi,

The listview example doesn't run on 64 bit computers. This is caused by the fact that the listview example contains listview items. Those items are streamed by reading/writing a TItemInfo record for each item with the following code:
      Stream.ReadBuffer(ItemInfo, SizeOf(ItemInfo));

Because TItemInfo contains a pointer, the size of TItemInfo is not the same on 32 bits platforms as on 64 bits platforms. The example is stored with a TItemInfo with a 4 bytes data field, the 64 bits lazarus version reads a 8 byte field and in the end more data will be read then there is available.

How can this be solved? Should we change the ListItem.Data property to an integer or a cardinal?

See also http://www.freepascal.org/mantis/view.php?id=8647

TItemInfo = record // packing is not needed (and not wanted since it controls also how this record is stored)
    ImageIndex: Integer;
    StateIndex: Integer;
    OverlayIndex: Integer;
    SubItemCount: Integer;
    Data: Pointer;
    //Caption: string[255]; // all stings follow here
  end;

Vincent

_________________________________________________________________
    To unsubscribe: mail [EMAIL PROTECTED] with
               "unsubscribe" as the Subject
  archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to