Конфликт двух программ при обращении к текстовому файлу - VB

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Постараюсь кратко, но емко… Для управления роботом пишу на Visual Basic 6.0 программу, которая при нажатии клавиши «стрелка вперед» в текстовом файле меняет строку PORT11=0:NC на PORT11=128:NC. С задержкой 0,5 секунд к этому же текстовому файлу обращается другая программа и включает/отключает исполнительный механизм (пока это лампочка). В первом варианте программы при нажатии «стрелка вперед» в текстовом файле меняет строку PORT11=0:NC на PORT11=128:NC. При нажатии «пробел» строки меняются обратно. В этой схеме все работает, но удобнее было бы, что бы строка менялась, пока удерживается «стрелка вперед» и возвращалась обратно при её отпускании. Я написал и такой код, он представлен ниже. Код работает, в файле при нажатии меняется с 0 на 128, при отпускании меняется обратно на 0. Но стоит подключить вторую программу которая обращается к этому же файлу и включает/отключает исполнительный механизм, как начинаются проблемы. При секундном нажатии все работает, лампочки мигают. При длительном удержании появляется ошибка от моей скомпилированной программы: «Run-time error ’70’: Permission denied», иногда вторая программа ругается: «Cannot open file d:\MP.loc». Видимо в этот момент моя программа работает с файлом и не пускает вторую. Подскажите, пожалуйста, как уладить конфликт? Возможно, в коде, что-либо надо изменить?
Листинг программы
  1. Dim textline As String
  2. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  3. If KeyCode = vbKeyUp Then
  4. textline = Space(FileLen("d:\ MP.loc"))
  5. fo = FreeFile
  6. Open "d:\ MP.loc" For Input As #fo
  7. textline = Input(LOF(fo), #fo)
  8. Close #fo
  9. textline = Replace(textline, "PORT11=0:NC", "PORT11=128:NC")
  10. FileNum = FreeFile
  11. Open "d: \MP.loc" For Output As FileNum
  12. Print #FileNum, textline
  13. Close #FileNum
  14. End If
  15. End Sub
  16. Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
  17. If KeyCode = vbKeyUp Then
  18. textline = Space(FileLen("d:\ MP.loc"))
  19. fo = FreeFile
  20. Open "d:\ MP.loc" For Input As #fo
  21. textline = Input(LOF(fo), #fo)
  22. Close #fo
  23. textline = Replace(textline, "PORT11=128:NC", "PORT11=0:NC")
  24. FileNum = FreeFile
  25. Open "d:\MP.loc" For Output As FileNum
  26. Print #FileNum, textline
  27. Close #FileNum
  28. End If
  29. End Sub

Решение задачи: «Конфликт двух программ при обращении к текстовому файлу»

textual
Листинг программы
  1. ' Открываем файл для последовательной записи.
  2. ' Причём другие процессы также могут записывать или читать этот файл.
  3. Open "TESTFILE" For Output Shared As #1

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы