Код: Выделить всё
#include marker.vih
interface TEST_003;
create view
var
i: integer;
curOwner : comp;
top : comp;
tmpnrec : comp;
pMarker : IMarker(marker) new;
mTreeID : longInt;
AS SELECT
*
FROM
FPSTBUD, FPSTBUD FPSTBUD2
WHERE
((
curOwner == FPSTBUD.CNODE(noindex) AND FPSTBUD.NREC == FPSTBUD2.CNODE(noindex)
))
;
screen scrTest;
bounds (,,80,20);
controls
button bounds (2,2,20,4), name = btn1, cmYes, 'Дерево' ('Дерево', hcButton1, scButton1);
end;
window WWW
show (2, 2, 110, 21)
tree 0 treeTest1 (,, scAtlTreeMark);
table FPSTBUD
recMarker = pMarker {FPSTBUD.nrec};
fields
FPSTBUD.name 'name' : [15] ,Protect;
FPSTBUD.nrec 'nrec' : [15] ,Protect;
FPSTBUD.cnode 'cnode': [15] ,Protect;
end; // tree
handleEvent
cmInit: {
//message('cmInit Windows');
mTreeID := InitMarker('VTB', 8, 1000, 1000, false);
message('mTreeID := ' + mTreeID);
}
cmDefault: {
message('Следующей строкой будет вылет... :(');
iMarker(pMarker).ExportTo(mTreeID); // здесь валится (((
}
cmDone:
{
message('cmDone Windows');
DoneMarker (mTreeID, 'VTB');
}
end; // HandleEvent
tableEvent table FPSTBUD
cmTreeTop: curOwner := top;
cmTreeDown: curOwner := FPSTBUD.NRec;
cmTreeUp: curOwner := FPSTBUD.cnode;
//cmInsertRecord: insert current FPSTBUD;
//cmUpdateRecord: update current FPSTBUD;
//cmDeleteRecord: {
// if (Message('Удалить запись?',YesNo)=cmYes) delete current FPSTBUD;
//}
end;// tableEvent table FPSTBUD
end; //window
handleEvent
cmInit: {
ReReadRecord(#FPSTBUD); //
}
cmYes: {
RunWindow(WWW);
}
end; // handleEvent
end.
Runtime error 216 (rtl: попытка обращения к некорректному дискриптору)
in streams_.dll at 00034200
и вылетает.
Вопрос: что я делаю не так?
Спасибо.