Показать сообщение отдельно
Старый 13.01.2004, 11:25   #2  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
Извините нечаянно отправил недописанное сообщение
boolean openFile()
{
boolean ret = false;
;
aSCIIFile = new AsciiIo(filename, 'r');

if (aSCIIFile)
{
if (aSCIIFile.status())
{
throw error("@SYS52680");
}
aSCIIFile.inFieldDelimiter('\r\n');
aSCIIFile.inRecordDelimiter('\r\n');
ret = true;
}
return ret;
}
Параметры \r\n надо обязательно проставить, при условии, если вы не хотите вводит разделители полей и записей. Если не проставишь то чтение строки будет происходить до первого пробела. Далее происходит чтение файла в память. Сдела это так:
if (aSCIIFile)
{
while (aSCIIFile.Status() == IO_Status::Ok)
{
memoryFile = conins(memoryFile, fileCountFile, aSCIIFile.read());
fileCountFile++;
}
}
Каждый элемент контейнера - это строка файла. Потом перемещаясь по контейнеру, вы фактически пермещатесь по строкам файла. Ну и наконец в цикле возможна обработка строк стандарными функциями Ax, например subStr итд. Единственная оговорка, что при вставки записи вполне понадобиться измнение номерной серии программно. Я делал это так:
Мое поле = NumberSeq::newGetNumFromCode("Моя серия", true, false).num();
За совет спасибо форуму.
Описание классов, отвечающих за работу с текстовыми файлами в Ax можно найти:
http://axapta.mazzy.ru/hints/textfile/