ich habe zwar noch keine Erklärung warum es mit dem Debugger unter 64bit OS() lief aber das Problem ist gelöst.
Code: Alles auswählen
FUNCTION OnDISPINFO(o,lp)
LOCAL st := NMLVDISPINFO():New()
st:_link_(lp,.F.)
//
// vorbelegen für 64bit OS()
//
st:item:pszText := REPLICATE(CHR(0),255)
st:item:cchTextMax := 255
//
// LVitem Structure
//
pItem := st:item
//
// ZERO-based itemid
//
itemid := pItem:iItem
//
// use Array
//
ctext := oLv:aSource[itemid+1]
bSaveError := ErrorBlock()
ErrorBlock( {|e| Break(e)} )
BEGIN SEQUENCE
//
// Assign Array Text to Display
//
pItem:cText := ctext+CHR(0)
RECOVER USING oError
ErrorBlock( bSaveError )
END SEQUENCE
ErrorBlock( bSaveError )
RETURN 0
es geht darum zur Laufzeit Speicher "dynamisch" mit Daten zu füllen die ich dann mit einem Listview (schnell) anzeigen kann.
Diese Art von virtuellem Listview verwendet auch der Explorer.
unter 32bit OS() reicht es aus die Structure anzulegen aber unter 64bit OS() muss man anscheint die Structure "vorbelegen" mit der "maximalen" Länge die "zulässig" ist ...
das ganze hat wohl mit dem Explorer und Sicherheitslecks zu tun wo man unter 32bit OS() einen "Überlauft" provozieren konnte ...