Кривые

В программе кривые представлены в виде двумерного массива КРИВАЯ (от 1 до КОЛИЧЕСТВО_ТОЧЕК, от 1 до 2). Таким образом, глубина n точки находится в КРИВАЯ (n,1), а ее значение в КРИВАЯ (n,2).

CRVNamesList — получить список имен загруженных кривых. Следует помнить, что при подключении к базе в «О!Пиум» загружаются все кривые по скважине, а не только те которые требуются для отображения на данном планшете, поэтому список имен может быть достаточно большим.

возвращаемое значение: VARIANT — массив строк с именами доступных кривых. В случае неудачи тип переменной равен vbEmpty. Для диагностики используйте конструкцию

If  VarType(names)=vbEmpty Then ‘переход к обработке ошибки

Параметры: нет

пример использования:

Жирным шрифтом отмечены строки, добавленные к прошлому примеру. Весь остальной текст не изменился.

 

CRVGet — получить двумерный массив глубин и значений кривой по имени

возвращаемое значение: VARIANT — массив пар чисел. Первое число в строке — глубина, второе число в строке — значение. В случае неудачи тип переменной равен vbEmpty. Для диагностики используйте конструкцию

If  VarType(crvdata)=vbEmpty Then ‘переход к обработке ошибки

Параметры: String — имя кривой.

пример использования:

 

Жирным шрифтом отмечены строки, добавленные к прошлому примеру. Весь остальной текст не изменился.

 

CRVPut — записать двумерный массив глубин и значений кривой под указанным именем.

Возвращаемое значение: нет.

Параметры: String — имя, под которым следует записать кривую, VARIANT — двумерный массив значений.

Если кривой под указанным именем нет, то она создается. Следует помнить, что факт создания новой кривой еще не достаточен для того, чтобы она стала видна на планшете. Экземпляр кривой создается в памяти и может быть вставлен на одно из полей планшета так, как и любая другая кривая из числа доступных. Следующее на что следует обратить внимание — это двумерный массив данных. Откуда он берется, как его создать, и откуда программа знает его размерность. Первый способ самый простой — используйте в качестве выходного массива прочитанный входной. Этот фрагмент кода (обратите внимание на выделения) иллюстрирует такой способ:

Однако уже при вычислении среднего значения трех соседних точек такой подход не приемлем. Как известно для этой задачи, при использовании для входных и выходных данных одного и того же массива, в вычислении значения следующей точки будет участвовать измененное значение предыдущей точки, что является грубой ошибкой. Хорошо бы иметь копию массива данных. В Basic это решается простым присваиванием. В том же месте где мы описывали переменную crvData, мы могли бы описать и crvResult As VARIANT. Тогда после строки присваивания crvResult=crvData в crvResult будет находиться точная копия  crvData со всеми типами размерностями и значениями. Теперь достаточно в цикле по всем точкам присвоить  crvResult(i,2)= нужное значение и можно сохранять. Решение простое и удобное, но не всегда подходящее. Как поступить если результирующий массив должен быть другой длины, чем исходный. Например, нам нужно вычислить значения не по всему интервалу, а с 2850.0 до 2900.0. Для простоты примера я сразу скажу, что это с 251-й точки по 500-ю включительно для нашего файла. Вот пример кода. Обратите внимание на выделения. дальше>>