Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: НУЖНА ПОМОШ Добавлено: 07.07.10 23:54  

Автор вопроса:  Petr
Вот код:
Private Sub Timer2_Timer()
Open "F:\test.txt" For Append As #1
Print #1, Text2.Text
Close #1
Text2.Text = ""
End Sub
Нужна сделать так, чтобы если на компьютере не окажется "F" то он должен искать букву флешки.Ну функция "or" "and", как правильно написать, помогите пожалйста.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 iprog



Вопросов: 26
Ответов: 110
 Web-сайт: usprogs.atheo-club.ru
 Профиль | | #1
Добавлено: 08.07.10 12:30
Попробуйте в цикле перебирать все диски, имеющиеся у пользователя, и проверять каждый диск, является ли он сьёмным. Все это делается так:

Declare Function GetLogicalDriveStrings Lib "kernel32.dll" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Declare Function GetDriveType Lib "kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

GetLogicalDriveStrings определяет имеющие силу логические диски на компьютере и размещает их названия корневых каталогов в строку lpBuffer. Каждое имя корневого каталога в буфере отделено нулевым символом, и полными строковыми концами в двух нулевых символах. Например, если существуют только A: и C: , строка будет " a: \ (пустой указатель) c: \ (пустой указатель) (пустой указатель) ", где (пустой указатель) представляет нулевой символ. Функция возвращает 0, если произошла ошибка, или длину строки, помещенной в lpBuffer, если функция выполнена успешно.

GetDriveType определяет типы дисков на компьютере. Это могут быть жесткие диски, дискеты, CD-ROM и др. Функция возвращает тип диска. Если 0 - значит ошибка,если 1 - значит, диск не существует, другие возвращаемые значения означают следующее:

DRIVE_CDROM = 5
CD-ROM.
DRIVE_FIXED = 3
Жесткий диск.
DRIVE_RAMDISK = 6
RAM-диск.
DRIVE_REMOTE = 4
Сетевой диск.
DRIVE_REMOVABLE = 2
Сменный диск(напр.дискета или любой сменный диск).

  1. ' Перечисляем имена всех корневых каталогов. Так как каждый вход в строке берет
  2. ' четыре символа (три для имени и один для пустого указателя), мы можем рассчитать длину
  3. ' строки. Это освобождает нас от проблем относительно пустых указателей.
  4. Dim drivenames As String ' получаем имена дисков
  5. Dim thisdrive As String ' буфер для имени диска
  6. Dim c As Long ' счетчик
  7. Dim slength As Long ' длина возвращаемой строки
  8. Dim endv(40) As String ' массив переменных для окончательного результата. Должно хватить
  9. Dim enddrive As String ' переменная для хранения имени нужного диска
  10. Const DRIVE_REMOVABLE = 2 ' константа для проверки диска
  11.  
  12. ' Создаем место в буфере для имен дисков.
  13. drivenames = Space(255) ' должно хватить
  14. ' Получаем имена всех дисков.
  15. slength = GetLogicalDriveStrings(255, drivenames)
  16. ' считаем по 4 символа для извлечения имен каждого диска.
  17. For c = 1 To slength Step 4 '
  18.   thisdrive = Mid(drivenames, c, 3) ' извлекаем 3-х символьную строку X:\ (где X-буква диска)
  19.   endv(c) = thisdrive ' записываем в массив переменных имена дисков
  20.   thisdrive = GetDriveType(endv(c)) ' проверяем, какой это диск
  21.   If thisdrive = DRIVE_REMOVABLE Then ' если это сменный диск
  22.     enddrive = endv(c) ' сохраняем его имя
  23.     Exit For ' выходим из цикла
  24.   End If
  25. Next c


Этот вариант может быть не совсем рабочим. Гарантии не даю :)

Ответить

Номер ответа: 2
Автор ответа:
 Petr



Вопросов: 45
Ответов: 58
 Профиль | | #2 Добавлено: 08.07.10 19:14
1.Ilya нельзя ли по проще.Ну например у многих буквы (F,E,H,G).Потом, на вверхнем примере куда пишется этот код:
Open "F:\test.txt" For Append As #1
Print #1, Text2.Text
Close #1
Text2.Text = ""
End Sub
2.А нельзя ли так Open "F:\test.txt" For Append As #1 or Open "E:\test.txt" For Append As #1 ну конечно, не получаеться, но я думаю что ,если правильно написать то должно сработать.Или если не обнаружиться, Съемный диск F то смотреть E.

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 08.07.10 19:43
Да, у меня друг в инсте тоже любит писать программы случайными перестановками кода) Не очень продуктивно придумывать что-то, когда есть документация и гугл. OR - операция логического сложения двух значений. Open вовсе не возращает значения.

Узнай сначала какие есть диски, какие из них съемные, а потом уже пиши куда надо. Ты же хочешь записать, куда запишется. А потом будешь писать функцию поиска, чтобы найти свой файл))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам