Как добыть memo-поле
Модераторы: m0p3e, edward_K, Модераторы
Как добыть memo-поле
имея про него информацию в табличке allmemo?
Пользователи хотят видеть в распечатке ДО memo-поле из группы ДО, в которую это ДО входит.
До записи в allmemo я доберусь без вопросов, а само поле-то как прочесть?
Пользователи хотят видеть в распечатке ДО memo-поле из группы ДО, в которую это ДО входит.
До записи в allmemo я доберусь без вопросов, а само поле-то как прочесть?
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Украина. Киев.
- Контактная информация:
Привет
У тебя есть описаний функций VIP-а?
Оно поставляется вместе с обычной документацией.
-----------
Есть ряд функций:
Метод ClearMemoField (memo) : boolean
Метод ExportMemoToFile (memo, string, boolean) : boolean
Метод GetFieldFromMemo (longInt, word, byte, integer): string
Метод GetMemoPrefix (integer) : string
Метод ImportFileToMemo (memo, string, boolean) : boolean
Метод IsMemoText (integer) : boolean
Метод MemoSeek (longInt, integer) : integer
Метод MemoReadLn (var string, integer) : integer
Метод PrintMemoField (memo, integer) : boolean
Метод SetMemoPrefix (integer, string)
------------
Нужна более детальная информация ?
У тебя есть описаний функций VIP-а?
Оно поставляется вместе с обычной документацией.
-----------
Есть ряд функций:
Метод ClearMemoField (memo) : boolean
Метод ExportMemoToFile (memo, string, boolean) : boolean
Метод GetFieldFromMemo (longInt, word, byte, integer): string
Метод GetMemoPrefix (integer) : string
Метод ImportFileToMemo (memo, string, boolean) : boolean
Метод IsMemoText (integer) : boolean
Метод MemoSeek (longInt, integer) : integer
Метод MemoReadLn (var string, integer) : integer
Метод PrintMemoField (memo, integer) : boolean
Метод SetMemoPrefix (integer, string)
------------
Нужна более детальная информация ?
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Работать точно так же как с файлом
Код: Выделить всё
File FMemo;
...
var s: String;
...
FMemo.OpenMemo(MemoTbl.MemoFld);
FMemo.Seek(0);
Do
{
...
FMemo.Readln(s);
...
}
While not FMemo.EOF;
FMemo.Close;
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Украина. Киев.
- Контактная информация:
Примерно так:
Думаю, что примерно так:
---------------
var
str : string;
....
MemoSeek (0,#AllMemo)
while ( MemoReadLn(Str,#AllMemo) = tsOk)
{
frm.PutEventById(feDoLoop,<!цикл!>);
frm.write(str);
}
------------------
---------------
var
str : string;
....
MemoSeek (0,#AllMemo)
while ( MemoReadLn(Str,#AllMemo) = tsOk)
{
frm.PutEventById(feDoLoop,<!цикл!>);
frm.write(str);
}
------------------
Мне ужасно стыдно, но где в присоединенной форме надо поставить конструкцию File Fmemo? Что-то ругается компилятор словами: "Нет такой функции, поля или метода, или неверный контекст использования FILE".
Я писала так:
.create view base as select * from basedoc...
.create view TMem as select * from AllMemo, spgrsch where
((word(1125) == allmemo.wtable
and
allmemo.crec == spgrsch.cgroupsch
)) and base.basedoc.nrec = spgrsch.cbasedoc;
.{table 'base'
...
.{table 'tMem'
.begin
file Fmem;
...
end.
.}
.}
Я писала так:
.create view base as select * from basedoc...
.create view TMem as select * from AllMemo, spgrsch where
((word(1125) == allmemo.wtable
and
allmemo.crec == spgrsch.cgroupsch
)) and base.basedoc.nrec = spgrsch.cbasedoc;
.{table 'base'
...
.{table 'tMem'
.begin
file Fmem;
...
end.
.}
.}
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Хм... а где было сказано, что это нужно сделать в FCOM
Э-э-эх
Набросать фейс, которому на вход будет передаваться текущая позиция в файле, а на выход новая текущая позиция в файле (GETPOS - получить тек. позицию; для признака конца файла можно использовать -1) и строка.
Может кто другой способ предложит.
Я бы сделал через объектный интерфейс.
memget.vih
memget.vip
проект компиляции make.prj
в самой форме myfrm.frm
Э-э-эх
Набросать фейс, которому на вход будет передаваться текущая позиция в файле, а на выход новая текущая позиция в файле (GETPOS - получить тек. позицию; для признака конца файла можно использовать -1) и строка.
Может кто другой способ предложит.
Я бы сделал через объектный интерфейс.
memget.vih
Код: Выделить всё
ObjInterface MemGetObj;
function InitMem(cRec: Comp): Boolean;
function GetStringFromMemo(var S: String): Boolean;
procedure DoneMem;
end;
VipInterface MemGet Implements MemGetObj;
Код: Выделить всё
interface Int_MemGet;
create view
var
cLink: Comp;
from MemoTbl
where
((
cLink == MemoTbl.nRec
));
File FMemo;
PUBLIC function InitMem(cRec: Comp): Boolean;
{
InitMem := false;
cLink := cRec;
if GetFirst MemoTbl = tsOK
{
if FMemo.OpenMemo(MemoTbl.MemoFld)
{
FMemo.Seek(0);
InitMem := true;
}
}
}
PUBLIC function GetStringFromMemo(var S: String): Boolean;
{
GetStringFromMemo := false;
S := '';
if not FMemo.EOF
{
FMemo.Readln(s);
GetStringFromMemo := true;
}
}
PUBLIC procedure DoneMem;
{
FMemo.Close;
}
HandleEvent
cmOnVipLoad:
{
cRec := Comp(0);
}
cmOnVipUnload:
{
}
end;
end.
Код: Выделить всё
#make 'memget.vip'
#make 'memget.vih'
#make 'myfrm.frm'
Код: Выделить всё
.var
...
MemoFile : MemGetObj;
...
.endvar
...
!в начале формы
.begin
...
GetVipRef(MemoFile, 'MemGet');
...
end.
...
MemoFile.InitMem(BaseDocNRec);
var S: String;
while MemoFile.GetStringFromMemo(S) do
{
...
}
MomoFile.DoneMem;
...
!в конце формы
.begin
...
FreeVipInterface(MemoFile, 'MemGet');
...
end.
И опять облом...
Ругается на
.var
...
MemoFile : MemGetObj;
...
.endvar
словами
Ошибка: Ожидался тип параметра (см.документацию) (стр.98, поз.24 в ... )
MemoFile : MemGetObj;
.var
...
MemoFile : MemGetObj;
...
.endvar
словами
Ошибка: Ожидался тип параметра (см.документацию) (стр.98, поз.24 в ... )
MemoFile : MemGetObj;
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Писал на ходу, поэтому есть пара ошибочек
1. в memget.vip пропущено подключение vih-файла, должно быть так
2. make.prj должен быть
1. в memget.vip пропущено подключение vih-файла, должно быть так
Код: Выделить всё
#include memget.vih //эта строка отсутствовала
interface Int_MemGet;
Код: Выделить всё
#make 'memget.vip'
#include memget.vih //не make
#make 'myfrm.frm'
-
- Посетитель
- Сообщения: 46
- Зарегистрирован: 05 июл 2005, 18:06
- Откуда: Корпорация Галактика
- Контактная информация:
Мне нужно не из allmemo а из атрибута.
я сделал вместо allmemo attrval.
У меня такая ошибка возникает
И галактика падает через 2 сек.
я сделал вместо allmemo attrval.
Код: Выделить всё
Interface MemGet;
create view
var
cLink: Comp;
from attrval
where
((
cLink == attrval.nRec
));
File FMemo;
PUBLIC function InitMem(cRec: Comp): Boolean;
{
InitMem := false;
cLink := cRec;
if GetFirst attrval = tsOK
{
if FMemo.OpenMemo(attrval.vlvar)
{
FMemo.Seek(0);
InitMem := true;
}
}
}
И галактика падает через 2 сек.
-
- Посетитель
- Сообщения: 46
- Зарегистрирован: 05 июл 2005, 18:06
- Откуда: Корпорация Галактика
- Контактная информация:
getvipref(memofile,'memget') стоит самым первым в первом .begin..end.
Вот мой .prj
Галактика уже не падает после этого сообщения. А выдает другое:
HELP!!!
Вот мой .prj
Код: Выделить всё
#make "memget.vip"
#include table.vip
#include memget.vih
#make "akt_do.rtf"
HELP!!!
Последний раз редактировалось Serrenium 24 ноя 2005, 17:32, всего редактировалось 1 раз.