По File

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

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

Ответить
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

По File

Сообщение galover »

Кто-нибудь юзал File в frm-ке (присоединенной форме)? У меня компилятор ругается на

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

...
File _fLastNum; // Файл с нумерацией документов

.function GetLastFileNum : byte;
begin
   result := 0;

   _fLastNum.OpenFile(_resFolder + csFileNumName, stCreate);
   
   var str : string;
   _fLastNum.ReadLn(str);
   
   result := Byte(str);
end.
Ошибка: Нет такой функции, поля или метода : _FLASTNUM.OPE
NFILE (стр.85, поз.22)
_fLastNum.OpenFile(_resFolder + csFileNumName, stCreate);
^
Что не так?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: По File

Сообщение Den »

Непосредственно через .file не пробал но работает так :

.linkform ...
.var
Fbasname1: string ;
f : longint ;
.endvar
.begin
FBasName1 :=GetPathParameter('files', 'TmpFilesDirectory', 0)+'mcs.bas';
f:=CreateFileHandle(FBasName1);
file_Openfile(FBasName1,stCReate,f);
file_WriteLn('qwerty');
File_Close(f);
end.
....
.endform
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: По File

Сообщение edward_K »

не все виповское пашет в формах. file в том числе - для того и есть дубликаты.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Re: По File

Сообщение galover »

Den
Спасибо, все получилось
edward_K писал(а):не все виповское пашет в формах. file в том числе - для того и есть дубликаты.
Да, так и есть
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: По File

Сообщение zna »

А как сделать обработку мемо-поля? Пытался так:

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

.begin
  Var sinfo: string; 
  Var lFile: longint;
Getfirst allmemo where((1000000000001h == allmemo.nrec));
lFile:=CreateFileHandle(’allmemo.mem’);
 file_Openfile(’allmemo.mem’,stOpenRead,lFile);
  file_seek(0, lFile);
  file_ReadLn(sinfo,lFile);
  file_Close(lFile);
message(‘sinfo = ‘+sinfo+’lFile = ‘+lFile);
End.
- не прокатило- в переменную sinfo ничего не прочиталось, хотя хендл lFile ненулевой..
?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: По File

Сообщение edward_K »

не путайте handler c открытием файла. В Create можно писать все что угодно - лишь бы было пустое или уникальное.
А вот open. Полезно во первых под имя файла держать переменную(ну чтобы 10 раз не переписывать), перед open проверить на его наличие через fileexist, а сам OpenFile проверить на true. Вы уверены что в рабочей папке галки есть этот файл и его никто не держит открытым? (там есть опция открыть даже если открыт - типа stDenyNone).
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: По File

Сообщение Den »

Метод ExportMemoToFile

Назначение

Функция записывает содержимое мемо-поля field в файл с именем file. Если параметр append равен true, то информация добавляется в конец файла.

Описание

function ExportMemoToFile(Field: memo; File: string;
Append: Boolean): boolean;
Параметры

field - мемо-поле.

file - имя файла, в который будет записано содержимое мемо-поля.

append - если append = true, то мемо-поле дописывается в конец файла.

Возвращаемое значение

Функция возвращает true при успешном выполнении операции.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: По File

Сообщение edward_K »

А. Так там еще и не файл. Если построчно нужно, то открывать нужно через File_OpenMemo. Ну еще есть memoreadln и иже с ней - поиск в vipprogr.chm поможет.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: По File

Сообщение zna »

Получилось всё через ExportMemoToFile, спасибо!

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

.linkform ’AktDoUsl_U_140904’ prototype is akts
.NameInList ’Акт о выполненных работах - 140904’
...
.begin
  Var FilePath, sinfo: string; 
  Var lFile: longint;
  FilePath :=GetPathParameter('files', 'TmpFilesDirectory', 0)+'memo.tmp';
  Getfirst allmemo where((0001000000000001h == allmemo.nrec));
 If ExportMemoToFile(allmemo.mem, FilePath, false) = true then
  {
   lFile:=CreateFileHandle(FilePath);
   if file_Openfile(FilePath,stOpenRead,lFile) = true then
    {
       file_seek(0, lFile);
       file_ReadLn(sinfo,lFile);
       file_Close(lFile);
       message(‘sinfo = ‘+sinfo);
      } message (‘Ошибка открытия файла ’+FilePath, error);
  } else message (‘Ошибка экспорта мемо- поля в файл!’, error);
end.
Вот за что я люблю Галактику, а паче - её документацию- очевидные, на первый взгляд, решения не работают, а решения типа "поездка из Питера в Москву через Владивосток" дают результат. Имхо, конечно..:grin:
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: По File

Сообщение edward_K »

Угу. Тока в данном случае в vipprogr.chm все написано и даже примеры есть. Просто не нужно юзать функции по открытию файлов для открытия мемо - там первая переменная другого типа и пихать в файловую в качестве имени файла названия поля имхо не такая очевидная вещь - как вы до такого додумались? А memoreadln чего не стали использовать? Эт еще проще.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: По File

Сообщение zna »

edward_K писал(а):.. Просто не нужно юзать функции по открытию файлов для открытия мемо - там первая переменная другого типа и пихать в файловую в качестве имени файла названия поля имхо не такая очевидная вещь - как вы до такого додумались..
Это в результате попыток подбора: разные варианты пробовал, прежде чем вопрос задать, а сюда привёл один из вариантов. Перебор вариантов включается, когда видишь, что собственное понимание правильного написания параметра ускользает, а опыта не хватает. Иногда такой метод срабатывает.
edward_K писал(а):.. А memoreadln чего не стали использовать?..
Так с ExportMemoToFile получилось же..
Ответить