Как программно дописать в MEMO поле?

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
win
Новичок
Сообщения: 26
Зарегистрирован: 24 ноя 2010, 13:10

Как программно дописать в MEMO поле?

Сообщение win »

Галактика 8,1
Oracle 11
Кто знает как дописать данные в MEMO поле?

для 1 записи работает, для 2 и более уже нет:

Код: Выделить всё

ExportMemoToFile(Docinfo1.TextData, 'file.$$$', false);  // экспортируем данные 
ImportFileToMemo(Docinfo.TextData, ''file.$$$', true);   // импортируем данные 
SetMemoPrefix(tnDocinfo, GetMemoPrefix(tnDocinfo1)); // пишем тип данных
DeleteFile('file.$$$');
update current Docinfo;
в идеале сделать бы так, но ругается на типы данных

Код: Выделить всё

Docinfo.TextData:= Docinfo.TextData + Docinfo1.TextData;
но работает только так (опять же только для 1 записи)

Код: Выделить всё

Docinfo.TextData:= Docinfo1.TextData;
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Как программно дописать в MEMO поле?

Сообщение m0p3e »

Проверил с текстом - работает.

Код: Выделить всё

  ImportFileToMemo ( DocInfo.TextData, 'C:\TEMP\memo1.txt', false );
  ImportFileToMemo ( DocInfo.TextData, 'C:\TEMP\memo2.txt', true );
  SetMemoPrefix ( tnDocInfo, 'txt' );
  Update Current DocInfo;
В memo тексты обоих файлов.
win
Новичок
Сообщения: 26
Зарегистрирован: 24 ноя 2010, 13:10

Re: Как программно дописать в MEMO поле?

Сообщение win »

Если в DocInfo.TextData лежит 5 файлов разного типа, и нужно из нескольких DocInfo.TextData перелить всю инфу в другое memo поле?

Если бы ExportMemoToFile(Docinfo1.TextData, 'file.$$$', false) - сохранял 5 файлов, так сохраняет 1 в формате AZM
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Как программно дописать в MEMO поле?

Сообщение edward_K »

Код: Выделить всё

File FMemo;
.....
    if FMemo.OpenMemo(DocInfo.TEXTDATA)
      {
        FMemo.Seek(0);
       while not FMemo.EOF
       {
          FMemo.Readln(s1);
      }
    }
То есть можно работать как с обычным файлом(запись по writeLn + update current). + недавно появились функции по работе с частями - почитайте в новой доке vipprogr.chm и вроде здесь месяц назад чего то проскакивало. В теории можно и функциями READ и write пройтись если файл не текстовый.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Как программно дописать в MEMO поле?

Сообщение m0p3e »

В vipprog к 9.1 появилось описание функций: *PartMemo*. Видимо они и нужны. VIP 5.5.20.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Как программно дописать в MEMO поле?

Сообщение edward_K »

В общем тоже столкнулся с проблемой заливки нескольких частей.
Прочитав внимательно документацию к ImportFileToMemo(раза с 5) увидел следующее
Если функция добавляет файл с расширением из более, чем из трех символов в мемо-поле, не имеющее данных, создается многотомный архив
то есть сделав вот так

Код: Выделить всё

  file_opis:=ww_dir+'\opis.docx'
  if fileExist(file_opis) DeleteFile(file_opis)
  Logstrtofile(file_opis,'Импорт из файла '+ww_file)
  Logstrtofile(file_opis,_DateTimeToStr(_CurDateTime,'YYYY-MM-DD HH:NN:SS' ) )
  ClearMemoField(Appendix.Contents);
  ImportFileToMemo(Appendix.Contents,file_opis,true)
  update current Appendix;

  ImportFileToMemo(Appendix.Contents, .... ,true)
  update current Appendix;
получил таки многотомный архив. Ну а по экспорту смотрим GetPartMemoCount, ExportPartMemoToFile + пример в раздале
Справка: Работа с БД и SQL > Функции для работы с БД > Функции и методы для работы с мемо-полями > Примеры использования функций и методов для работы с мемо-полями >
Ответить