Как Добавить/Удалить ссылку программно?

В вашем случае вы можете сделать:

with open('test.txt','r') as inp:
    for f in inp.readlines():
        print(f.split())

Что печатает:

['node', 'name', '|', 'requested', 'bytes', '|', 'total', 'execution', 'time', '|', 'accelerator', 'execution', 'time', '|', 'cpu', 'execution', 'time']
['prefix/up23/conv2d_transpose', '37.75MB', '(100.00%,', '15.34%),', '150.71ms', '(100.00%,', '4.83%),', '0us', '(0.00%,', '0.00%),', '150.71ms', '(100.00%,', '4.83%)']
['prefix/up20/conv2d_transpose', '18.87MB', '(84.66%,', '7.67%),', '115.01ms', '(95.17%,', '3.68%),', '0us', '(0.00%,', '0.00%),', '115.01ms', '(95.17%,', '3.68%)']
['prefix/up17/conv2d_transpose', '18.87MB', '(76.99%,', '7.67%),', '91.43ms', '(91.49%,', '2.93%),', '0us', '(0.00%,', '0.00%),', '91.43ms', '(91.49%,', '2.93%)']
['prefix/fres19/conv_b_1x3/Conv2D', '2.10MB', '(69.33%,', '0.85%),', '46.41ms', '(88.56%,', '1.49%),', '0us', '(0.00%,', '0.00%),', '46.41ms', '(88.56%,', '1.49%)']
['prefix/fres5/conv_b_3x1/Conv2D', '2.10MB', '(68.47%,', '0.85%),', '44.63ms', '(87.07%,', '1.43%),', '0us', '(0.00%,', '0.00%),', '44.63ms', '(87.07%,', '1.43%)']
['prefix/fres6/conv_a_3x1/Conv2D', '2.10MB', '(67.62%,', '0.85%),', '40.19ms', '(85.64%,', '1.29%),', '0us', '(0.00%,', '0.00%),', '40.19ms', '(85.64%,', '1.29%)']
['prefix/fres22/conv_a_3x1/Conv2D', '2.10MB', '(66.77%,', '0.85%),', '39.97ms', '(84.36%,', '1.28%),', '0us', '(0.00%,', '0.00%),', '39.97ms', '(84.36%,', '1.28%)']
['prefix/fres21/conv_a_3x1/Conv2D', '2.10MB', '(65.92%,', '0.85%),', '38.85ms', '(83.08%,', '1.24%),', '0us', '(0.00%,', '0.00%),', '38.85ms', '(83.08%,', '1.24%)']

Это то, что вы хотите?

8
задан George Stocker 9 March 2009 в 23:45
поделиться

2 ответа

Вот некоторый пример кода:

Создайте ссылку из файла

  Sub AddWS()
  'Create a reference to Windows Script Host, '
  'where you will find FileSystemObject ' 
  'Reference name: "IWshRuntimeLibrary" '
  'Reference Name in references list: "Windows Script Host Object Model" '
  ReferenceFromFile "C:\WINDOWS\System32\wshom.ocx"
  End Sub

  Function ReferenceFromFile(strFileName As String) As Boolean
  Dim ref As Reference

         On Error GoTo Error_ReferenceFromFile
         References.AddFromFile (strFileName)
         ReferenceFromFile = True

  Exit_ReferenceFromFile:
         Exit Function

   Error_ReferenceFromFile:
         ReferenceFromFile = False
         Resume Exit_ReferenceFromFile
   End Function 

Удалите ссылку

  Sub DeleteRef(RefName)
  Dim ref As Reference

      'You need a reference to remove '
      Set ref = References(RefName)
      References.Remove ref

  End Sub 


You can use the references collection to find if a reference exists.

Ссылка существует

  Function RefExists(RefName)
  Dim ref As Object

     RefExists = False

     For Each ref In References
         If ref.Name = RefName Then
             RefExists = True
         End If
     Next

  End Function

От: http://wiki.lessthandot.com/index.php/Add,_Remove,_Check_References

Можно также хотеть прочитать http://www.mvps.org/access/modules/mdl0022.htm

10
ответ дан 5 December 2019 в 12:13
поделиться

Лучшее решение состоит в том, чтобы ограничить ссылки в Вашем Доступе MDB к внутренним компонентам Доступа. Это было бы ссылкой Доступа, ссылкой VBA и ссылкой ДАО. Всеми другими внешними библиотеками нужно пользоваться посредством позднего связывания. Если Вы используете Объект Файловой системы, например, вместо этого (со ссылкой на Windows Script Host Object Model):

  Dim objFSO As New FileSystemObject

  If objFSO.FolderExists("\\d9m09521\WB\") Then
    ...
  End If

Вы удалили бы ссылку и преобразовали бы ее в это:

  Dim objFSO As Object

  Set objFSO = CreateObject("Scripting.FileSystemObject")
  If objFSO.FolderExists("\\d9m09521\WB\") Then
    ...
  End If

Если Вы обеспокоены хитом производительности инициализации FSO каждый раз, когда Вы используете его, можно кэшировать ссылку на него. Я обычно использую статическую переменную в функции для возврата объекта как это:

Public Function FSO() As Object
  Static objFSO As Object

  If objFSO Is Nothing Then
     Set objFSO = CreateObject("Scripting.FileSystemObject")
  End If
  FSO = objFSO
End Function

Теперь, Вы могли бы хотеть стать необычными и также смочь разъединить инстанцированный объект, в этом случае Вы сделаете что-то вроде этого:

Public Function FSO(Optional bolCloseObject As Boolean = False) As Object
  Static objFSO As Object

  If bolCloseObject Then
     Set objFSO = Nothing
     Exit Function
  End If
  If objFSO Is Nothing Then
     Set objFSO = CreateObject("Scripting.FileSystemObject")
  End If
  FSO = objFSO
End Function

В любом случае самое главное - то, что позднее связывание разрешает местоположение внешних библиотек во времени выполнения и таким образом не повредится, кроме того, если внешняя библиотека не установлена или не правильно зарегистрирована. С поздним связыванием можно захватить для обоих из тех условий, но с ранним связыванием, просто повреждается целое приложение Доступа.

4
ответ дан 5 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

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