docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.1 KiB
title, type, api, tags, sources
| title | type | api | tags | sources | |||||
|---|---|---|---|---|---|---|---|---|---|
| OpenTextFile - Открыть текстовый файл запросов | guide |
|
|
|
*API экспортных функций > Функции работы с прикладной библиотекой > Функции работы с базами данных *
OpenTextFile - Открыть текстовый файл запросов
Пример... Аналог данной функции при использовании Automation - метод ksDataBaseObject::ksOpenTextFile. Синтаксис:
reference OpenTextFile(char * fileName);
Входной параметр:
fileName - имя файла.
Возвращаемое значение:
указатель на открытый файл - в случае успешного завершения,
0 - в случае неудачи.
Примечание:
- Функция работает по правилам стандартной процедуры WINDOWS OpenFile.
- Реализованные в рамках данного раздела функции работы с текстовыми файлами обеспечивают их построчную обработку и позволяют вынести обращения к базе данных во внешний текстовый файл. Это дает возможность работать с разными платформами СУБД без изменения выполняемого кода приложения.
- При использовании Unicode следует использовать функцию OpenTextFileW.
OpenTextFile, CloseTextFile, ReadStrFromTextFile- пример использования
//////////////////////////////////////////////////////////////////////// //пример текстового файла 1.loa 10.0 100 1 15.0 80 2 20.0 120 1 //////////////////////////////////////////////////////////////////////// //пример текстового файла запросов 11.txt привязанный к файлу 1.loa 1:TXT_DB 2:1.loa 3:1 2 3 4:a=%.1f ////////////////////////////////////////////////////////////////////////// //пример текстового файла запросов 12.txt привязанный к БД ACCECC c именем // test в ODBC.INI. ODBCSDK должен быть установлен на ПК 1:ODBC_DB 2:test 3:select a,b,t from table1 4:where a=%.1f ////////////////////////////////////////////////////////////////////////// #ifndef __LIBTOOL_H #include <libtool.h> #endif #ifndef __LIBDB_H #include <libdb.h> #endif void DrawRect (void) { char buf[40], s[128]; struct { double a; double b; int t; } r; reference f = OpenTextFile("11.txt"); if (EditMacroMode()) //режим редактирования GetMacroParam(&r, sizeof(r)); else { //cоздание нового макроэлемента r.a = 20; r.b = 10; } // считали тип БД - "TXT_DB" if (!ReadStrFromTextFile(f,buf,1)) {Error("Ошибка"); return; } reference bd = CreateDB (buf); // считали имя БД - "1.loa" if (!ReadStrFromTextFile(f,buf,2)) {Error("Ошибка"); return; } ConnectDB(bd, buf); //задаем отношение reference r1 = Relation(bd); RDouble ("a"); RDouble ("b"); RInt (""); EndRelation(); //считывать все колонки "1 2 3" if (!ReadStrFromTextFile(f,buf,3)) {Error("Ошибка"); return; } DoStatement(bd, r1, buf); ReadDouble("задайте ширину",r.a,0,100, &r.a); //считать условие "a=%.1f" if (!ReadStrFromTextFile(f,buf,4)) {Error("Ошибка"); return; } sprintf (s, buf,r.a); // условие например a=10.0 Condition(bd, r1, s); if (ReadRecord(bd, r1, &r)) { reference m = Macro(); LineSeg(0, 0, r.a, 0, r.t); LineSeg(r.a, 0, r.a, r.b, r.t); LineSeg(r.a, r.b, 0, r.b, r.t); LineSeg(0, r.b, 0, 0, r.t); EndObj(); //записать параметры в макроэлемент SetMacroParam( m, &r, sizeof(r), NULL, NULL, -1); } else Error("прямоугольник с такими параметрами не найден в БД"); DeleteDB(bd); CloseTextFile(f); }; /* OpenTextFile */