--- title: "ksSaveFile - Выдать диалог выбора файла для сохранения" type: guide api: [api7] tags: [guide, api7, kssavefile] sources: - kssavefile.html --- *API экспортных функций > Функции работы с файлами документов * ## ksSaveFile - Выдать диалог выбора файла для сохранения Пример... Аналог данной функции при использовании Automation - метод KompasObject::ksSaveFile. Синтаксис: ``` unsigned int ksSaveFile (char * ext, char * oldName, char * filter, char * name, unsigned int bufLen, unsigned char preview); Входные параметры: Ext - расширение имени файла, oldName - имя файла по умолчанию, Filter - фильтр поиска (0 - формируется автоматически), Preview - признак подключения окна предварительного просмотра: 1 - с подключением окна, 0 - без подключения окна. Выходные параметры: Name - буфер для имени файла, bufLen - длина отведенного буфера для name в символах. Возвращаемое значение: - требуемая длина буфера в символах. ``` Описание: Если размер отведенного буфера меньше требуемой длины bufLen, имя файла не заполняется. В этом случае имя файла можно получить функцией GetRightFileName. Примечание. При использовании Unicode следует использовать функцию ksSaveFileW. ## ksSaveFile - Пример использования //создать массив строк reference arrName = CreateArray (CHAR_STR_ARR, 0); //выберем файлы, которые хотим перезаписать if (ChoiceFiles ("*.cdw", // расширение имени файла "Чертежи(*.cdw)|*.cdw|Фрагменты(*.frw)|*.frw|Все файлы (*.*)|*.*|", // фильтр поиска //(0 - формируется автоматически) arrName)) // массив неопределенной длины на строки CHAR_STR_ARR { int count = GetArrayCount (arrName); char fileName[ MAX_TEXT_LENGTH ]; for (uint i = 0; i < count; i++) { char oldFileName[ MAX_TEXT_LENGTH ]; //выберем старое имя файла GetArrayItem (arrName, // указатель на массив i, // индекс в массиве //(нумерация начинается с 0) oldFileName, // указатель на структуру элемента MAX_TEXT_LENGTH);// размер структуры элемента //выберем новое имя файла if (ksSaveFile ("*.cdw", // расширение имени файла oldFileName, // имя файла по умолчанию "Чертежи(*.cdw)|*.cdw|Фрагменты(*.frw)|*.frw|Все файлы (*.*)|*.*|", // фильтр поиска (0 - формируется автоматически) fileName, // буфер для имени файла MAX_TEXT_LENGTH , // размер отведенного буфера name 1)) // 1-с подключением окна // предварительного просмотра { //если новое и старое имя не совпадают, перезапишем документ if (lstrcmp (oldFileName, fileName)) { reference doc = OpenDocument (oldFileName, 1); if (doc) { SaveDocument (doc, fileName); CloseDocument (doc); } } } else break; } } //удалить массив DeleteArray(arrName);