Функция SetTableMemo |
Сохраняет хендл на мемо-поле. Предназначена для вызова в обработчике триггера.
Важной особенностью является то, что реальное копирование мемо-поля из файла происходит в функции ModifyTableRecord или ModifyAnyTableRecord, а не в данной функции, как могло бы показаться, поэтому закрывать хендлы c файлами нужно после вызова ModifyTableRecord или ModifyAnyTableRecord.
function SetTableMemo(MemoHandle : longInt) : word;
MemoHandle - хендл на мемо-поле.
Код ошибки. (tsOk, tsInternalError).
Функция не выбрасывает исключений.
#include recAaa1.inc handler with replace c_aaa1 on trigger aaa1 convert action { var old_buf: record as table aaa1; // буфер старой таблицы var new_buf: recAAA1; // буфер новой таблицы, берем из include-файла var f,ff: longInt; var s,n: string; GetTableBuffer(old_buf); // считываем старый буфер new_buf := recAAA1(old_buf); // копируем не изменившиеся поля new_buf.x := '['+string(old_buf.w)+']'; // и модифицированное поле f := OpenFileHandle(GetTableMemo); // открываем поток с мемо-полем ff := CreateFileHandle('xxx'); // создаем хендл с именем ххх n := CreateTmpFileName; file_openFile(n, stCreate, ff); // открываем файл для нового мемо-поля file_readln(s, f); // читеам старое s := '['+s+']'; // как-то обрабатываем file_writeln(s, ff); // записываем в файл SetTableMemo(GetMemoHandleFF(ff)); // сохраняем изменения как мемо-поле // реальное копирование мемо-поля из файла происходит в этой функции // поэтому закрывать хендлы нужно после нее ModifyTableRecord(new_buf); DeleteFileHandle(f); // закрываем хендл DeleteFileHandle(ff); // закрываем хендл result := true; }
Атлантис 5.0.02.