Работа с EOF

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Бред какой-то... У меня метод EOF возвращает Variant/Bool, который возвращает Variant/True если конец достигнут и Variant/False если таки не достигнут...
Проблема в том, что это цикл почему-то выполняется бесконечно, поскольку Not (ls.EOF) возвращает True даже если ls.EOF равен False =(...

Код: Выделить всё

Sub test()
Dim ls
Set ls = CreateObject("LogScanner.Object.1")
ls.First
While Not (ls.EOF)
     Range(ls.Range).Value = ls.Text
     ls.Next
Wend
End Sub
2B OR NOT(2B) = FF
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Absurd, если в ls нет элементов, то цикл твой будет вечен. Если я конечно правильно логику EOF, BOF понимаю.
Даже самый дурацкий замысел можно воплотить мастерски
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

поскольку Not (ls.EOF) возвращает True даже если ls.EOF равен False =(...
Not(False)=True
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Проблема решена выражением
while ls.EOF = False
но почему Not (ls.EOF) возвращает True даже если ls.EOF равен True я так и не понял
2B OR NOT(2B) = FF
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

chur писал(а): Not(False)=True
Я ошибся в постинге ... У меня получалось, что Not(True)=True, причем достоверно - В дебагере смотрел
2B OR NOT(2B) = FF
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Absurd, это абсурд. ;)
Неверю.
А кто такой logscaner.object?
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Absurd, это абсурд.
Неверю.
Тем не менее факт.
while Not (ls.EOF) - не работает
while ls.EOF = False - работает как надо
А кто такой logscaner.object?
Мой ActiveX объект с дуальным интерфейсом для скриптинга.
Возвращает только OLE Automation - совместимые занчения.
Свойство EOF имеет тип VARIANT. Таг типа равен VT_BOOL.
2B OR NOT(2B) = FF
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

Код: Выделить всё

Dim b As Variant
b = 1 
If Not (b) Then
  MsgBox "NOT(" & b & ") IS TRUE"
Else
  MsgBox "NOT(" & b & ") IS FALSE"
End If
If b = False Then
  MsgBox "(" & b & "=False) IS TRUE"
Else
  MsgBox "(" & b & "=False) IS FALSE"
End If
В VB значение True = -1(минус 1). При использовании значения 1 (плюс 1) в качестве True могут появлятся подобные непонятки. Посмотри как работает код с разными значениями b: (-1, 0, 1).
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

BTW а что такое OATRUE/OAFALSE? Используются ли они именно для OLE Automation и Visual Basic'а ?
2B OR NOT(2B) = FF
Ответить