Страница 1 из 1

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

Добавлено: 26 фев 2016, 11:41
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;

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

Добавлено: 26 фев 2016, 12:25
m0p3e
Проверил с текстом - работает.

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

  ImportFileToMemo ( DocInfo.TextData, 'C:\TEMP\memo1.txt', false );
  ImportFileToMemo ( DocInfo.TextData, 'C:\TEMP\memo2.txt', true );
  SetMemoPrefix ( tnDocInfo, 'txt' );
  Update Current DocInfo;
В memo тексты обоих файлов.

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

Добавлено: 26 фев 2016, 12:48
win
Если в DocInfo.TextData лежит 5 файлов разного типа, и нужно из нескольких DocInfo.TextData перелить всю инфу в другое memo поле?

Если бы ExportMemoToFile(Docinfo1.TextData, 'file.$$$', false) - сохранял 5 файлов, так сохраняет 1 в формате AZM

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

Добавлено: 26 фев 2016, 13:38
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 пройтись если файл не текстовый.

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

Добавлено: 26 фев 2016, 17:44
m0p3e
В vipprog к 9.1 появилось описание функций: *PartMemo*. Видимо они и нужны. VIP 5.5.20.

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

Добавлено: 21 июл 2016, 22:41
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 > Функции для работы с БД > Функции и методы для работы с мемо-полями > Примеры использования функций и методов для работы с мемо-полями >