Visual Basic в вопросах и ответах

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Visual Basic в вопросах и ответах

Сообщение P-cad »

Я занимабсь программированием на Visual Basic 6.0.
Подскажите, пожалуйста:
1. Почему он не хочет удалять файлы с атрибутом "для чтения" и файлы с названием, начинающимися с пробела?
вот код:
_____
Private Sub OPN click()
Dim FN as string
CD.ShowOpen
FN = CD.FileName
Kill (FN)
End Sub
_____
где OPN - кнопка, при нажатии которой появляется объект типа CommonDialog(имя - CD), а после открытия файл (FN - имя файла) удаляется.
2.Есть объект типа OLE с именем OLE1 типа "файл презентации". Есть кнопка (OPN), при нажатии которой программа выдаёт объект CommonDialog (CD) с фильтром файлов формата PPT(файлы презентаций). после открытия презентация должна показываться в OLE1. Но она не хочет. Где ошибка:
_____
Private Sub OPN click()
CD.ShowOpen
OLE1.SourceDoc = CD.FileName
End Sub
Аватара пользователя
\\Sergey//
Открыл глаза
Сообщения: 76
Зарегистрирован: Ср апр 25, 2007 08:56:09
Откуда: Москва

Re: Где ошибка

Сообщение \\Sergey// »

P-cad писал(а):1. Почему он не хочет удалять файлы с названием, начинающимися с пробела?
вот код:
_____
Private Sub OPN click()
Dim FN as string
CD.ShowOpen
FN = CD.FileName
Kill (FN)
End Sub
_____

Все прекрасно удаляется вот код:

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

Private Sub OPN_Click()
Dim FN As String
CD.ShowOpen
FN = CD.FileName
Kill FN
End Sub
Где нужен массовый опыт, кропотливые наблюдения, негнущаяся настойчивость без уступок, бесстрашная смелость воплощения мысли, - там выступает радиолюбитель.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

Странно...
а насчет файлов для чтения? Пробовал?
Аватара пользователя
\\Sergey//
Открыл глаза
Сообщения: 76
Зарегистрирован: Ср апр 25, 2007 08:56:09
Откуда: Москва

Сообщение \\Sergey// »

Да, пробовал. Они удаляться не хотят. Собственно, на то они и файлы для чтения. :)
Где нужен массовый опыт, кропотливые наблюдения, негнущаяся настойчивость без уступок, бесстрашная смелость воплощения мысли, - там выступает радиолюбитель.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

А вот и идея!
----------
SetAttr FN, VbNormal
----------
Автоматически устанавливает атрибуты файла на "обычный" перед удалением!
Аватара пользователя
\\Sergey//
Открыл глаза
Сообщения: 76
Зарегистрирован: Ср апр 25, 2007 08:56:09
Откуда: Москва

Сообщение \\Sergey// »

Хорошая идея!
Но можно и WIN32API использовать.
Где нужен массовый опыт, кропотливые наблюдения, негнущаяся настойчивость без уступок, бесстрашная смелость воплощения мысли, - там выступает радиолюбитель.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

Тоже мысль:-)
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

Вот еще проблем:
----------
open (c:/"text.txt") for random , #1
line input #1, a
----------
почему он говорит "неправильный режим файла"?
Аватара пользователя
\\Sergey//
Открыл глаза
Сообщения: 76
Зарегистрирован: Ср апр 25, 2007 08:56:09
Откуда: Москва

Сообщение \\Sergey// »

Это же произвольный доступ. В нем считывание информации производится командой Get, а не Line Input.
Короче, вот правильный код:
Dim Temp As Variant
Open "C:\text.txt" For Random As #1
Get #1, 1, Temp
Close #1
MsgBox Temp

Только в файле должен находится какой либо текст.
Где нужен массовый опыт, кропотливые наблюдения, негнущаяся настойчивость без уступок, бесстрашная смелость воплощения мысли, - там выступает радиолюбитель.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

а цифирка 1 между запятыми - номер считываемой строки?
Аватара пользователя
\\Sergey//
Открыл глаза
Сообщения: 76
Зарегистрирован: Ср апр 25, 2007 08:56:09
Откуда: Москва

Сообщение \\Sergey// »

Порядковый номер байта.
Где нужен массовый опыт, кропотливые наблюдения, негнущаяся настойчивость без уступок, бесстрашная смелость воплощения мысли, - там выступает радиолюбитель.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

А что он говорит "неправильная длина записи"?
Аватара пользователя
\\Sergey//
Открыл глаза
Сообщения: 76
Зарегистрирован: Ср апр 25, 2007 08:56:09
Откуда: Москва

Сообщение \\Sergey// »

Ты мой код использовал?
Если да, то в этом коде во второй строчке после #1 с помощью ключевого слова Len укажи нужную длину строки.
Например так:

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

Open "C:\text.txt" For Random As #1 Len=10

Вообще, лучше сначала с помощью Put запиши информацию в файл, открой и посмотри его, а потом с помощью Get считай. Так наглядней будет.
Где нужен массовый опыт, кропотливые наблюдения, негнущаяся настойчивость без уступок, бесстрашная смелость воплощения мысли, - там выступает радиолюбитель.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

len - это длина считываемого текста?
Аватара пользователя
\\Sergey//
Открыл глаза
Сообщения: 76
Зарегистрирован: Ср апр 25, 2007 08:56:09
Откуда: Москва

Сообщение \\Sergey// »

Да. Если мы считываем, то при Len=10, считается 10 байт. Если записываем, то при Len=10 записываться будет только та информация, вес которой 10 байт или меньше. А если эта инфа весит более 10 Байт, то произойдет ошибка.
Где нужен массовый опыт, кропотливые наблюдения, негнущаяся настойчивость без уступок, бесстрашная смелость воплощения мысли, - там выступает радиолюбитель.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

А если мне нужно считать конкретно какую-либо строчку?
Аватара пользователя
\\Sergey//
Открыл глаза
Сообщения: 76
Зарегистрирован: Ср апр 25, 2007 08:56:09
Откуда: Москва

Сообщение \\Sergey// »

Строчки создаются во время записи комбинированием порядкового номера байта и параметра Len. При считывании ты используешь и номер байта и длину считываемого текста. То-есть опять-таки ты комбинируешь номер байта и параметр Len. Таким образом и считываешь конкретную строчку.
Где нужен массовый опыт, кропотливые наблюдения, негнущаяся настойчивость без уступок, бесстрашная смелость воплощения мысли, - там выступает радиолюбитель.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

Сорри, но как я говорил, тоже можно сделать.
Ошибка у меня была в том, что в режиме надо было писать input вместо rаndоm.
Аватара пользователя
\\Sergey//
Открыл глаза
Сообщения: 76
Зарегистрирован: Ср апр 25, 2007 08:56:09
Откуда: Москва

Сообщение \\Sergey// »

Чего, чего? Input задает последовательный доступ для чтении файла.
Random задает произвольный доступ. Они не взаимозаменяемы.
Или я тебя неправильно понял?
Где нужен массовый опыт, кропотливые наблюдения, негнущаяся настойчивость без уступок, бесстрашная смелость воплощения мысли, - там выступает радиолюбитель.
Аватара пользователя
P-cad
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

Не знаю. Может у меня в компе чо глючит.
--
open ("c:/test.txt") for input as #1
dim a as string
input #1, a
msgbox (a)
--
а так - ругается:
--
open ("c:/test.txt") for random as #1
dim a as string
input #1, a
msgbox (a)
--
Ответить

Вернуться в «Интеграция с ПК»