Тема: Cоздание последовательного файла

Здравствуйте уважаемые Знатоки, хочу задать вопрос немного не соответствующий тематики форума. Мне нужно передать данные из  AutoCAD в Excel без применения специальных библиотек и запуска Excel, т.е. я хочу создать обычный последовательный файл, с расширением txt, в котором  каждая запись отделена от другой пробелом. Затем этот файл можно будет загрузить в Excel. Но команда на создание последовательного файла дает сбой, без выдачи сообщения об типе ошибке.
Dim filenum as integer
filenum = FreeFile
Open "с:\auto.txt" For Random as filenum

Re: Cоздание последовательного файла

> Андрей
Обратите внимание на терминологию - есть файлы последовательного доступа (а не последовательные файлы) и файлы произвольного доступа. Думаю, и даже уверен,
что вас подвела путаница в понятиях.
Файл последовательного доступа может быть открыт только в режимах:
- Input
- Output
- Append
Файл произвольного доступа открывается только в режиме - Random.
Синтаксис оператора OPEN для файла произвольного доступа:

Open PathName [For Random] As filenum Len = recLength

recLength - длина записи в байтах

Re: Cоздание последовательного файла

Спасибо за ответ. Уточняю, меня интересует создание файла последовательного доступа.
Попробовал внести изменения, но все ровно при запуске идет сбой.
Private Sub CommandButton1_Click()
Dim filenum As Integer
filenum = FreeFile
Open "c:\auto.txt" For Output As filenum
End Sub

Re: Cоздание последовательного файла

А закрывается файл где?

Re: Cоздание последовательного файла

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

Re: Cоздание последовательного файла

> Андрей
я как то пытался на VBA написать сохранение в файл для ответа на один из вопросов данного форума. Пытался через встроенный в VB функции но на в VBA они у меня не работали (FSO помнится тоже не обрадовал меня), хотя на чистом VB все работает. Вот перечень API которыми можно воспользоваться:

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
                            ByVal lpFileName As String, _
                            ByVal dwDesiredAccess As Long, _
                            ByVal dwShareMode As Long, _
                            ByVal lpSecurityAttributes As Any, _
                            ByVal dwCreationDisposition As Long, _
                            ByVal dwFlagsAndAttributes As Long, _
                            ByVal hTemplateFile As Long) As Long
Private Declare Function WriteFile Lib "kernel32" ( _
                            ByVal hFile As Long, _
                            lpBuffer As Any, _
                            ByVal nNumberOfBytesToWrite As Long, _
                            lpNumberOfBytesWritten As Long, _
                            ByVal lpOverlapped As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" ( _
                            ByVal hObject As Long) As Long

Re: Cоздание последовательного файла

У меня такое:

Sub test()
Dim f As Integer
Dim fName As String
  f = FreeFile
  Open "c:\test.txt" For Output As f 'Len = 20
  Close f
End Sub

Создало пустой файл и закрыло доступ к нему.

Re: Cоздание последовательного файла

> kpblc
Вот прекрасно работающий код. На чистом VBA.

Sub test()
    Dim f As Integer
    Dim fName As String
    Dim str As String
    Dim ReadString As String
    str = "To be, or not to be?"
    f = FreeFile
    Open "c:\test.txt" For Output As f
    Print #f, str
    Close f
    Open "c:\test.txt" For Input As f
    Line Input #f, ReadString
    Close f
    MsgBox ReadString
End Sub

Так что дело не в коде и не применяемом языке.
И незачем тут привлекать API-функции. Дело в каких-то обстоятельствах или условиях, о которых не договаривает автор темы. Может быть, потому что не придает им значения.

Re: Cоздание последовательного файла

Уважаемый kpblc я попробовал ваш алгоритм, но результат нулевой. Чтобы исключить все возможные факторы, я создал форму с единственной кнопкой.
Private Sub CommandButton1_Click()
UserForm3.Hide
Dim f As Integer
    Dim fName As String
    Dim str As String
    Dim ReadString As String
    str = "To be, or not to be?"
    f = FreeFile
    Open "c:\test.txt" For Output As f
    Print #f, str
    Close f
    Open "c:\test.txt" For Input As f
    Line Input #f, ReadString
    Close f
    MsgBox ReadString
UserForm3.Show
End Sub
Я уже думал, что через встроенную функцию в этой модификации AutoCAD 2006 нельзя создать файл с последовательным доступом, но если у Вас получилось, то пожалуйста опишите подробнее. Я думаю это будет интересно многим участникам форума, т.к. такой файл можно непосредственно считывать в Excel (если данные вводить через пробел, а строки разделять Enter)/
Всем  принимавшим участие в обсуждении - Большое спасибо.

Re: Cоздание последовательного файла

> Андрей
Попробуйте удлиннить путь к создаваемому файлу...
Возможно автокад не может создать файл в корне диска C:\
Сталкивался с подобной проблемой из лиспа...

Re: Cоздание последовательного файла

> Евгений Елпанов
Да вроде бы не Автокад создает файлы, а операционная система... и в этом плане могут быть ограничения наложенные админом?

> Андрей
Предполагаю, что это обращение ко мне, но мне нечего добавить - код выложен на ветке. Присоединяюсь к предложению Евгения Елпанова.
P.S. Я запускал этот код из ACAD2002, но не думаю, что здесь версия ACAD'а принципиальна.

Re: Cоздание последовательного файла

> LeonidSN
Я тож писал на VBA :)

> Андрей
А если попробовать просто Sub? И заодно проверить "ручное" создание файла по указанному пути, как советует > Евгений Елпанов (2006-06-14 21:25:01) и > LeonidSN (2006-06-14 22:45:10) ?

Re: Cоздание последовательного файла

> Андрей
Попробуйте пример с API
http://www.cad.dp.ua/stats/a_vba/conten … t.html#API OPENFILENAME

Re: Cоздание последовательного файла

> Saor
Принципиально. Здесь нет необходимости в API.
Надо найти подлинную причину неудачи. Иначе можно дойти до летающих тарелочек и зеленых человечков...

Re: Cоздание последовательного файла

Уважаемые господа, файл с применением API, создать не сложно. Мне самому интересно разобраться в причине. В хелпе имеется даже пример создания файла с последовательным доступом, но он тоже зависает. Если создать текстовый файл в Блокноте, то файл открывается для чтения.
Open "c:\avt.txt" For Input as filenum
Но если вставить Output, все зависает.

Re: Cоздание последовательного файла

> Андрей
Кривой Windows, озверевший админ, плохое настроение у компа?...

Re: Cоздание последовательного файла

Проверено все работает

 Open named & namesf & ".s5" For Output As #30
 Print #30, "0101001"
 Print #30, Date
 Close #30

Re: Cоздание последовательного файла

> Sheiks
До тех пор, пока номер 30 не будет занят :) Уж лучше получай как

Dim iFileNum As Integer
  iFileNum = FreeFile()

Вместо #30