Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.07.2013
Сообщений: 5

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

30.07.2013, 02:00. Показов 1375. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Постараюсь кратко, но емко…

Для управления роботом пишу на 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». Видимо в этот момент моя программа работает с файлом и не пускает вторую.

Подскажите, пожалуйста, как уладить конфликт?
Возможно, в коде, что-либо надо изменить?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Dim textline As String
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Then
textline = Space(FileLen("d:\ MP.loc"))
fo = FreeFile
Open "d:\ MP.loc" For Input As #fo
textline = Input(LOF(fo), #fo)
Close #fo
textline = Replace(textline, "PORT11=0:NC", "PORT11=128:NC")
FileNum = FreeFile
Open "d: \MP.loc" For Output As FileNum
Print #FileNum, textline
Close #FileNum
End If
End Sub
 
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Then
textline = Space(FileLen("d:\ MP.loc"))
fo = FreeFile
Open "d:\ MP.loc" For Input As #fo
textline = Input(LOF(fo), #fo)
Close #fo
textline = Replace(textline, "PORT11=128:NC", "PORT11=0:NC")
FileNum = FreeFile
Open "d:\MP.loc" For Output As FileNum
Print #FileNum, textline
Close #FileNum
End If
End Sub
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.07.2013, 02:00
Ответы с готовыми решениями:

Ошибка при обращении к текстовому файлу из ресурсов
Среда Visual Basic STUDIO’2010 Professional В папку " Resources" добавил текстовый файл Address.txt При обрашении к нему выводится...

Конфликт имён при обращении с файлами Excel
Умные люди, выручайте. Есть скрипт ".exe" который работает с файлами Excel. Скрипт сделан по коду ".py". Когда скрипт...

Ошибка при двойном обращении к файлу
Здравствуйте, у меня была задача сделать программу которая при нажатии на button вставляет текст з textbox в txt файл и когда нажимаешь на...

5
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
30.07.2013, 02:41
1) Как заключить в теги код программы (в сообщении)
2) У тебя наверно происходит повторное срабатывание при нажатии - сделай выход если строка УЖЕ переписана:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'If (уже переписано) Then Exit Sub
 
If KeyCode = vbKeyUp Then
textline = Space(FileLen("d:\ MP.loc"))
fo = FreeFile
Open "d:\ MP.loc" For Input As #fo
textline = Input(LOF(fo), #fo)
Close #fo
textline = Replace(textline, "PORT11=0:NC", "PORT11=128:NC")
FileNum = FreeFile
Open "d: \MP.loc" For Output As FileNum
Print #FileNum, textline
Close #FileNum
End If
End Sub
1
0 / 0 / 0
Регистрация: 28.07.2013
Сообщений: 5
01.08.2013, 01:28  [ТС]
Зная другие языки - понимаю, что задача легкая. Недавно изучая VB, никак не могу найти информацию.

Подскажите, кому не сложно, как присвоить переменной «а» содержание третий строки в текстовом документе «1.txt»?

Наиболее близкое, что нашел - Как присвоить переменной содержимое строки из текстового файла?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
01.08.2013, 07:34
Цитата Сообщение от diesel2400 Посмотреть сообщение
Наиболее близкое, что нашел
Это код для .NET
У нас немного по другому. Всё дело в том, что при работе со строковыми файлами программа не может определить заранее номера строк, пока на прочитает файл. И для того, чтобы присвоить переменной 3-ю стоку надо прочитать из файла как минимум 3 строки. Соответственно если нужна десятая, то как минимум 10 строк.
За построчное считывание отвечает оператор Line Input
Для считывания 3-х строк код будет таким
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Command1_Click()
    Dim strString As String ' Этой переменной присвоим строку
    intFH = FreeFile
      Open "C:\Text.txt" For Input As #intFH
      For i = 1 To 3 ' цикл на 3 строки
            Line Input #intFH, strString
      Next
    Close #intFH
    MsgBox strString ' проверяем, что считали
End Sub
1
 Аватар для PAnT0P
1492 / 587 / 107
Регистрация: 26.03.2012
Сообщений: 1,039
01.08.2013, 12:00
Лучший ответ Сообщение было отмечено как решение

Решение

У тебя при открытии файла происходит его блокировка, поэтому другой процесс не может его открыть. Для того чтобы этого не происходило используй опцию Shared
Visual Basic
1
2
3
' Открываем файл для последовательной записи.
' Причём другие процессы также могут записывать или читать этот файл.
Open "TESTFILE" For Output Shared As #1
4
0 / 0 / 0
Регистрация: 28.07.2013
Сообщений: 5
02.08.2013, 22:43  [ТС]
Спасибо за полезную информацию, конфликт исчерпан.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.08.2013, 22:43
Помогаю со студенческими работами здесь

Ошибка при обращении к dbf файлу из VB
Приветствую всех! В приложении из dbf-файла необходимо выбрать последние 100 записей. В файле есть поля Date и Time Код: ...

Значение Nothing при обращении к файлу Access в ресурсах
В ресурсах находится файл System.mdb, при: Dim Base As Object Base = My.Resources.ResourceManager.GetObject("System") ...

При повторном обращении к файлу выдается ошибка
Нужно открыть файл, прочитать из него, после выполнить некоторые действия, закрыть файл, затем, не перезапуская программу, опять обратиться...

Разграничение потоков при обращении к одному файлу
Здравствуйте! Помогите с такой задачей: необходимо создать программу, в которой реализовать работу с потоками следующего типа, один процесс...

Программа производит поиск по текстовому файлу 1, нужно занулить при поиске те слова, указанные в файле 2
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru