e1337e4016
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>
108 lines
4.1 KiB
Markdown
108 lines
4.1 KiB
Markdown
---
|
|
title: "OpenTextFile - Открыть текстовый файл запросов"
|
|
type: guide
|
|
api: [api7]
|
|
tags: [guide, api7, opentextfile]
|
|
sources:
|
|
- opentextfile.html
|
|
---
|
|
|
|
*API экспортных функций > Функции работы с прикладной библиотекой > Функции работы с базами данных *
|
|
|
|
|
|
## OpenTextFile - Открыть текстовый файл запросов
|
|
|
|
Пример...
|
|
Аналог данной функции при использовании Automation - метод ksDataBaseObject::ksOpenTextFile.
|
|
Синтаксис:
|
|
```
|
|
reference OpenTextFile(char * fileName);
|
|
Входной параметр:
|
|
fileName - имя файла.
|
|
Возвращаемое значение:
|
|
указатель на открытый файл - в случае успешного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
1. Функция работает по правилам стандартной процедуры WINDOWS OpenFile.
|
|
2. Реализованные в рамках данного раздела функции работы с текстовыми файлами обеспечивают их построчную обработку и позволяют вынести обращения к базе данных во внешний текстовый файл. Это дает возможность работать с разными платформами СУБД без изменения выполняемого кода приложения.
|
|
3. При использовании 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 */
|