Страница: 1 |
Страница: 1 |
Вопрос: Error '52' Bad File name or number
Добавлено: 31.07.07 21:28
Автор вопроса: -АлександР- | Web-сайт:
Сравнение скорости, это конечно - хорошо, но вернусь к своим баранам==DD
Пишу в файл произволного доступа:
'ïèøåì ôàéë äàííûõ
Dim Fl As Integer
Fl = FreeFile
Open Patth For Random As #Fl Len = Len(kk(1, 1))
Dim k As Integer, i As Integer, j As Integer
For i = 1 To 4
For j = 1 To 4
If Grid1.TextArray(Grid1.GetCellIndex(i, j)) = "" Then _
Grid1.TextArray(Grid1.GetCellIndex(i, j)) = "0"
kk(i, j) = Grid1.TextArray(Grid1.GetCellIndex(i, j))
k = k + 1
Put #Fl, k, kk(i, j)
Next j
Next i
For i = 1 To 4
For j = 1 To 7
If Grid2.TextArray(Grid2.GetCellIndex(i, j - 1)) = "" Then _
Grid2.TextArray(Grid2.GetCellIndex(i, j - 1)) = "0"
FF(i, j) = Grid2.TextArray(Grid2.GetCellIndex(i, j - 1))
k = k + 1
Put #Fl, k, FF(i, j)
Next j
Next i
For i = 1 To 2
For j = 1 To 5
If Grid3.TextArray(Grid3.GetCellIndex(i, j - 1)) = "" Then _
Grid3.TextArray(Grid3.GetCellIndex(i, j - 1)) = "0"
N1(i, j) = Grid3.TextArray(Grid3.GetCellIndex(i, j - 1))
k = k + 1
Put #Fl, k, N1(i, j)
Next j
Next i
For i = 1 To 2
For j = 1 To 5
If Grid4.TextArray(Grid4.GetCellIndex(i, j - 1)) = "" Then _
Grid4.TextArray(Grid4.GetCellIndex(i, j - 1)) = "0"
N2(i, j) = Grid4.TextArray(Grid4.GetCellIndex(i, j - 1))
k = k + 1
Put #Fl, k, N2(i, j)
Next j
Next i
For i = 1 To 9
For j = 1 To 1
If Grid5.TextArray(Grid5.GetCellIndex(i - 1, j)) = "" Then _
Grid5.TextArray(Grid5.GetCellIndex(i - 1, j)) = "0"
k = k + 1
D(i, j) = Grid5.TextArray(Grid5.GetCellIndex(i - 1, j))
Put #Fl, k, D(i, j)
Next j
Next i
Close #Fl
End Sub
но если обращаюсь во:
MsgBox Command 'for check
Call SaveToFile(Command)
пораскиув мозгами, я пришел к выводу, что так как файл открыт и у нему идет обращение второй раз - вот и возникает ошибка...
Собственно, к такому же выводу пришел и гугл:
http://support.microsoft.com/kb/214674
Как правильно выйти из этой ситуации?
Заранее спасибо!
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
Виктор M
ICQ: 175861300
Вопросов: 1
Ответов: 12
Профиль | | #1
Добавлено: 31.07.07 22:42
А Command какую строку содержит?
Номер ответа: 2
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #2
Добавлено: 31.07.07 23:22
cтроку файла, я специально проверку делал:
Call SaveToFile(Command)
когда открываю программу через какой-то файл и передаю в качестве параметра значение коммандной строки, то появляется ошибка:
Номер ответа: 3
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #3
Добавлено: 31.07.07 23:31
Номер ответа: 4
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #4
Добавлено: 01.08.07 00:07
он открывается тогда, когда я по нему кликаю, по умолчанию с этим файлом открывается моя программа и в процедуре Form_load я считываю с него данные, (по кр. мере пытаюсь)).
Раз путь к файлу верный, номер файла по всем правилам не может быть занят, так как получен из Freefile, то возможно что этот файл уже открыт..., а возможно я заблуждаюсь, но тогда в чем причина?
Номер ответа: 5
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #5
Добавлено: 01.08.07 01:23
Если ты его открыл в Form_Load, то там же должен его закрыть, либо в SaveToFile использовать тот же идентификатор, какой ты получил в Form_Load.
Номер ответа: 6
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #6
Добавлено: 01.08.07 16:22
ReDim D(9, 1) As Single
With Grid1
.col = 0
.row = 0
.Text = "Íàçâàíèå ãðóíòà"
.row = 1
.Text = "Ïåñîê ïûëåâàòûé"
.row = 2
.Text = "Cóïåñü ïëàñòè÷íàÿ"
.row = 3
.Text = "Ïåñîê ìåëêèé"
.row = 4
.Text = "Ñóãëèíîê ìÿãêîïëàñò."
.row = 0
.col = 1
.Text = "×èñëî ïëàñòè÷íîñòè"
.col = 2
.Text = "Ïîêàçàòåëü òåêó÷åñòè"
.col = 3
.Text = "Êîýôôèöèåíò ïîð."
.col = 4
.Text = "Ìîùíîñòü ñëîÿ, ì."
End With
With Grid2
.row = 0
.col = 0
.Text = "Ýëåìåíò"
.col = 1
.Text = "Âåñ ýëåìåíòà"
.col = 2
.Text = "Êîëè÷åñòâî"
.col = 3
.Text = "Âûñîòà ýëåìåíòà"
.col = 4
.Text = "Øèðèíà"
.col = 5
.Text = "Äëèíà"
.col = 6
.Text = "Îáúåì"
End With
With Grid3
.TextArray(.GetCellIndex(0, 0)) = "Íîìåð ðåæèìà"
.TextArray(.GetCellIndex(0, 1)) = "Ðåæèì"
.TextArray(.GetCellIndex(0, 2)) = "Íàãðóçêà ïî îñè 1"
.TextArray(.GetCellIndex(0, 3)) = "Íàãðóçêà ïî îñè 2"
.TextArray(.GetCellIndex(0, 4)) = "Íàãðóçêà ïî îñè 3"
End With
With Grid4
.TextArray(.GetCellIndex(0, 0)) = "Íîìåð ðåæèìà"
.TextArray(.GetCellIndex(0, 1)) = "Ðåæèì"
.TextArray(.GetCellIndex(0, 2)) = "Íàãðóçêà ïî îñè 1"
.TextArray(.GetCellIndex(0, 3)) = "Íàãðóçêà ïî îñè 2"
.TextArray(.GetCellIndex(0, 4)) = "Íàãðóçêà ïî îñè 3"
End With
With Grid5
.ColWidth(0) = 2200
.ColWidth(1) = 1000
.Width = .ColWidth(0) + .ColWidth(1) + 100
.TextArray(.GetCellIndex(0, 0)) = "Òèï îïîðû"
.TextArray(.GetCellIndex(1, 0)) = "Áàçà âäîëü îñè 1"
.TextArray(.GetCellIndex(2, 0)) = "Áàçà âäîëü îñè 2"
.TextArray(.GetCellIndex(3, 0)) = "Óãîë ëîê. è ãëîá. îñåé"
.TextArray(.GetCellIndex(4, 0)) = "Hw"
.TextArray(.GetCellIndex(5, 0)) = "Âûñîòà áàíêåòêè, Hb"
.TextArray(.GetCellIndex(6, 0)) = "Gb"
.TextArray(.GetCellIndex(7, 0)) = "Go"
.TextArray(.GetCellIndex(8, 0)) = "Yo"
End With
'÷èòàåì èç ôàéëà äàííûõ
 im Fl As Byte:
 im i As Integer, j As Integer, k As Integer
 im dArr(9, 2) As Single
If Command = "" Then
'Save
Else
MsgBox Command 'for check
Call SaveToFile(Command)
End If
For i = 1 To 4
Grid1.ColWidth(i) = 2850
Next i
Grid1.ColWidth(0) = 2850
Grid1.Width = 2850 * 5 + 100
Grid1.Height = 1550
For i = 1 To Grid2.Cols - 1
Grid2.ColWidth(i) = 14350 / Grid2.Cols
Next i
Grid2.ColWidth(0) = 2500
Grid2.ColWidth(2) = 2500
Grid2.ColWidth(6) = 1500
Grid2.ColWidth(5) = 1500
Grid2.Width = 14350 / Grid2.Cols * Grid2.Cols + 100
Grid2.Height = 1550
For i = 0 To Grid3.Cols - 1
Grid3.ColWidth(i) = 10000 / Grid3.Cols
Next i
Grid3.Width = Grid3.ColWidth(1) * 5 + 100
Grid3.Height = 1000
For i = 0 To Grid4.Cols - 1
Grid4.ColWidth(i) = 10000 / Grid4.Cols
Next i
Grid4.Width = Grid4.ColWidth(1) * 5 + 100
Grid4.Height = 1000
End Sub
Номер ответа: 7
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #7
Добавлено: 01.08.07 18:10
Это, вероятно, потому, что в command передается название файла в кавычках — их надо убрать перед открытием файла.
Номер ответа: 8
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #8
Добавлено: 01.08.07 18:43
ухты, и правда!
Спасибо, shuffle, ты молодец!
Номер ответа: 9
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #9
Добавлено: 06.08.07 19:53
Command - это, вроде, команда, которую посылает винда когда открывается прога. Например если открывать файл с помощью твоей проги, то в Command будет содержаться путь к файлу (в ковычках)
Номер ответа: 10
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #10
Добавлено: 06.08.07 22:41
Номер ответа: 11
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #11
Добавлено: 07.08.07 00:02
Я раньше как-то писал программки, через них открывались и считывались файлы, все было вроде б без кавычек. Это - первый раз
Номер ответа: 12
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #12
Добавлено: 07.08.07 02:44
Ну так ты не написал, каким образом ты запускаешь свою прогу и как передаешь путь.
Номер ответа: 13
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #13
Добавлено: 07.08.07 23:59
через файл, который является файлом этой программы..., ну как через .doc открывается word а потом просто считываю command - путь к этому файлу, все как обычно
Номер ответа: 14
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #14
Добавлено: 08.08.07 01:02
Т.е. ты ассоциировал какой-то тип файла со своей прогой. Так вот, запуск твоей проги, видимо, происходит с параметром "%1", а не просто %1 (или ""%1"" вместо "%1".
Номер ответа: 15
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #15
Добавлено: 08.08.07 20:21
Так и было... гм, а говорят еще, что телепатов не существует...