Класс (статические) методы в VBA

Предупреждение: [fункция] : не удалось открыть поток: [причина]

Это происходит, когда вы обычно вызываете файл include , require или fopen, и PHP не смог найти файл или не имел достаточного разрешения на загрузку файла.

Это может произойти по разным причинам:

  • неправильный путь к файлу
  • путь к файлу относительный
  • include path is wrong
  • разрешения слишком ограничительные
  • SELinux в силе
  • и многие другие ...

Одна из распространенных ошибок заключается в том, чтобы не использовать абсолютный путь. Это можно легко решить, используя полный путь или магические константы , такие как __DIR__ или dirname(__FILE__):

include __DIR__ . '/inc/globals.inc.php';

или:

require dirname(__FILE__) . '/inc/globals.inc.php';

Обеспечение правильного пути используется одним шагом в устранении этих проблем, это также может быть связано с несуществующими файлами, правами файловой системы, предотвращающими доступ или открытыми ограничениями на основе самого PHP.

Лучший способ для быстрого решения этой проблемы необходимо выполнить контрольный список устранения неполадок ниже.

Вопросы, относящиеся:

Связанные ошибки:

42
задан Renaud Bompuis 5 November 2010 в 06:23
поделиться

4 ответа

Это ("Общественность, Общая"), только работало бы в VB.Net.

нет никакого способа определить Методы класса в VBA (или VB). Я предложил бы создать государственную функцию в модуле.

30
ответ дан John Saunders 26 November 2019 в 23:29
поделиться

AFAIK, самое близкое, которое можно получить (и не случается так, что близко), должен использовать "анонимный" экземпляр, таким образом, что-то вроде этого:

With New NotReallyStaticClass
    .PerformNotReallyStatic Method, OnSome, Values
End With
4
ответ дан Mike Woodhouse 26 November 2019 в 23:29
поделиться

необходимо объявить p2, прежде чем можно будет использовать Набор следующим образом:

тусклый p2 как Человек

, После того как Вы делаете это, необходимо заменить оператор Set с помощью стандартного присвоения: p2 = Человек. Создайте ("Bob")

В Функции: удалите ключевое слово "Набора"... это могло также быть источником ошибки.

я лечу слепой, но логически кажется, что это должно работать. Я плохо знаком с использованием модулей Класса в VBA, но они не слишком отличаются от использования свойств VB.Net.

-2
ответ дан 26 November 2019 в 23:29
поделиться

Немного поздно, но какого черта

В VB6 / VBA нет классовых или статических методов. Но вы можете явно указать имя модуля. У вас не может быть модуля и класса с тем же именем, но вы могли бы назвать его чем-то похожим.

Итак, у меня может быть класс с именем Employee и модуль с именем EmployeeUtil, и тогда я могу написать:

  Dim emp As Employee
  Dim code As String
  Set emp = EmployeeUtil.Create( "Smith", "John", 21-Feb-1988)
  code = "123XY"
  If EmployeeUtil.IsCodeValid( code) Then
    emp.Code = code
  Else
    emp.Code = EmployeeUtil.DefaultCode
  EndIf

Да, значения жестко запрограммированы, и обработка кода, вероятно, должна выполняться установщиком свойств, но я не об этом пытаюсь сказать. EmployeeUtil, по сути, является заполнителем для членов, не являющихся экземплярами.

Вы заметите, что метод Create таким образом дает нам псевдо-подобный конструктор для класса Employee. Все, что делает эта функция, - это создает экземпляр Employee, назначает параметры через установщики свойств, а затем возвращает экземпляр.

8
ответ дан 26 November 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: