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

По File

Добавлено: 04 авг 2010, 14:28
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);
^
Что не так?

Re: По File

Добавлено: 04 авг 2010, 15:20
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

Re: По File

Добавлено: 04 авг 2010, 16:08
edward_K
не все виповское пашет в формах. file в том числе - для того и есть дубликаты.

Re: По File

Добавлено: 04 авг 2010, 16:25
galover
Den
Спасибо, все получилось
edward_K писал(а):не все виповское пашет в формах. file в том числе - для того и есть дубликаты.
Да, так и есть

Re: По File

Добавлено: 09 сен 2014, 17:09
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 ненулевой..
?

Re: По File

Добавлено: 09 сен 2014, 18:41
edward_K
не путайте handler c открытием файла. В Create можно писать все что угодно - лишь бы было пустое или уникальное.
А вот open. Полезно во первых под имя файла держать переменную(ну чтобы 10 раз не переписывать), перед open проверить на его наличие через fileexist, а сам OpenFile проверить на true. Вы уверены что в рабочей папке галки есть этот файл и его никто не держит открытым? (там есть опция открыть даже если открыт - типа stDenyNone).

Re: По File

Добавлено: 09 сен 2014, 19:28
Den
Метод ExportMemoToFile

Назначение

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

Описание

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

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

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

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

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

Функция возвращает true при успешном выполнении операции.

Re: По File

Добавлено: 09 сен 2014, 19:35
edward_K
А. Так там еще и не файл. Если построчно нужно, то открывать нужно через File_OpenMemo. Ну еще есть memoreadln и иже с ней - поиск в vipprogr.chm поможет.

Re: По File

Добавлено: 10 сен 2014, 09:37
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:

Re: По File

Добавлено: 10 сен 2014, 10:23
edward_K
Угу. Тока в данном случае в vipprogr.chm все написано и даже примеры есть. Просто не нужно юзать функции по открытию файлов для открытия мемо - там первая переменная другого типа и пихать в файловую в качестве имени файла названия поля имхо не такая очевидная вещь - как вы до такого додумались? А memoreadln чего не стали использовать? Эт еще проще.

Re: По File

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