Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.32. Вспомогательный объект для работы с форматом CSV

А.5.32.19. Команда RDS_CSV_STRTOFILE – записать строку в файл

# Приложения

## Приложение А. Функции, константы и структуры RDS

### А.5. Сервисные функции и макросы RDS

#### А.5.32. Вспомогательный объект для работы с форматом CSV

##### А.5.32.19. Команда RDS_CSV_STRTOFILE – записать строку в файл

Команда RDS_CSV_STRTOFILE записывает в файл, открытый для построчной записи командой RDS_CSV_OPENFILEWRITE, очередную строку.

Вызов команды

      int iStrNum= …  // Номер строки в объекте
      BOOL bOk=rdsCommandObjectEx(Csv,RDS_CSV_STRTOFILE,iStrNum,NULL);

Параметры и результат

Csv(RDS_HOBJECT)
  Идентификатор вспомогательного объекта для работы с CSV, ранее созданного функцией rdsCSVCreate.
iStrNum(int)
  Номер строки в памяти объекта, которая будет записана в файл. Строки нумеруются начиная с нуля.
bOk(BOOL)
  Результат записи: TRUE – строка записана, FALSE – произошла ошибка (ошибка записи или в объекте нет строки iStrNum).

Примечания

Эта команда записывает в файл, ранее открытый командой RDS_CSV_OPENFILEWRITE, строку с номером iStrNum из внутренней памяти объекта Csv. Чтобы узнать, удалось ли записать строку в файл, следует проверить результат возврата команды или выполнить команду RDS_CSV_FILEERROR.

Строки в файл пишутся последовательно, одна за другой. Последовательность строк в файле не обязательно будет совпадать с последовательностью строк в памяти объекта, она будет зависеть от параметров iStrNum, с которыми будут вызываться команды RDS_CSV_STRTOFILE. Например, для записи в файл строк в порядке, обратном их следованию в памяти объекта, можно использовать следующий цикл:

      RDS_HOBJECT Csv=rdsCSVCreate();
        … формирование текста в объекте …
      // Число строк в объекте
      int LineCount=rdsGetObjectInt(Csv,RDS_CSV_LINECOUNT,0);
      // Открытие файла
      rdsSetObjectStrA(Csv,RDS_CSV_OPENFILEWRITE,0,"file.csv");
      for(int i=LineCount-1;i>=0;i--)
        rdsCommandObjectEx(Csv,RDS_CSV_STRTOFILE,i,NULL);
      // Закрытие файла
      rdsCommandObject(Csv,RDS_CSV_CLOSEFILE);
      // Удаление объекта
      rdsDeleteObject(Csv);

Можно также, например, все время работать с нулевой строкой объекта: устанавливать в ней элементы вызовом rdsCSVSetItem, а затем сбрасывать ее в файл.

См. также

rdsCSVCreate, rdsCommandObjectEx, RDS_CSV_LINECOUNT, RDS_CSV_OPENFILEWRITE, RDS_CSV_CLOSEFILE, RDS_CSV_FILEERROR, RDS_CSV_STRFROMFILE, rdsCSVSetItem.