запись в файл

Тема в разделе "Lotus - Программирование", создана пользователем jcolor, 23 сен 2005.

  1. jcolor

    jcolor Гость

    Добрый день!
    столкнулась с такой проблемой:
    при записи данных в файл:

    Dim fileNum As Long
    fileNum = Freefile()
    Open path For Output As fileNum
    Print #fileNum,<string>
    Close #fileNum

    формируется файл, добавляется запись и в конце к ней рпиплюсовываются невидимые символы(перевод строки вроде)

    как правильно оформить запись в файл, чтобы не добавлялись символы?
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Перевод строки для текстового файла - это правильно. Иначе все сольется в одну кучу. Если тебе так надо, то просто сформируй строку нужной длины и запиши.
    Или используй бинарные файлы.
     
  3. jcolor

    jcolor Гость

    <!--QuoteBegin-Medevic+23:09:2005, 13:24 -->
    <span class="vbquote">(Medevic @ 23:09:2005, 13:24 )</span><!--QuoteEBegin-->Перевод строки для текстового файла - это правильно. Иначе все сольется в одну кучу. Если тебе так надо, то просто сформируй строку нужной длины и запиши.
    Или используй бинарные файлы.
    [snapback]25119" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    да, мне и надо, чтобы все в одну кучу
    без лишних символов,
    сейчас я формирую одну общую строку и затем только ее записываю,
    так в конце файла все равно добавляются два лишних символа :(

    попробую бинарным файлом,
    это получается, что надо будетпосимвольно все вводить?

    спасибо
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: jcolor
    Получается да. Т.к. строка занимает 2 байта на символ, то целиком строку записать не получится.
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Посмотри еще класс NotesStream.
    Возможно это то, что тебе нужно.
     
  6. Domino6

    Domino6 Гость

    <!--QuoteBegin-jcolor+23:09:2005, 13:41 -->
    <span class="vbquote">(jcolor @ 23:09:2005, 13:41 )</span><!--QuoteEBegin-->так в конце файла все равно добавляются два лишних символа
    [snapback]25122" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Это символы закрытия файла они везде есть. A0 D0

    Используй бинарный вывод или вывод по структуре.

    При построковом выводе - всегда добавляется "перевод каретки"

    используй другой тип вывода
     
  7. jcolor

    jcolor Гость

    Спасибо:(
    попробую как-то подругому
     
  8. jcolor

    jcolor Гость

    <!--QuoteBegin-Domino6+23:09:2005, 14:30 -->
    <span class="vbquote">(Domino6 @ 23:09:2005, 14:30 )</span><!--QuoteEBegin-->Используй бинарный вывод или вывод по структуре
    [snapback]25126" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    А что значит - вывод по структуре?
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: jcolor
    Я посмотрел. Через NotesStream точно можно.
    Делается так:

    Код (Text):
    Dim session As NotesSession
    Dim stream As NotesStream
    Set session = New NotesSession
    Set stream = session.CreateStream
    Call stream.Open(path, "Windows-1251")
    Call stream.WriteText(text)
    Call stream.Close
    Т.е. нужно поставить кодировку и получим один байт на символ. Все переменные типа String будут писаться нормально.
     
  10. jcolor

    jcolor Гость

    <!--QuoteBegin-Medevic+23:09:2005, 14:52 -->
    <span class="vbquote">(Medevic @ 23:09:2005, 14:52 )</span><!--QuoteEBegin-->Я посмотрел. Через NotesStream точно можно.
    Делается так:
    [snapback]25129" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Спасибо огромное!!!!!!!!
    Все получилось!!!!!!
    :()
     
  11. jcolor

    jcolor Гость

    Добрый день!
    теперь у меня возникла проблема записи файла в каталог:
    т.е. если заданный каталог существует, то необходимо записать в него файл,
    если нет, то сначала создать этот каталог:

    Код (Text):
    Dim path As String

    path="c:\tmp\folder1\"
    if Dir$(path,16) = " " Then Mkdir path
    Делаю такую проверку, при этом выдается ошибка "Path not found"

    как правильно проверить существование каталога?
     
  12. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: jcolor
    Да все правильно. Просто эта функция не работает с вложенными папками. Т.е. сначала надо проверить, создана ли c:\tmp. Если нет, то создать. Потом проверить, создана ли c:\tmp\folder1. И опять создать, если не создана.
    А проще написать свою функцию.
     
  13. jcolor

    jcolor Гость

    <!--QuoteBegin-Medevic+27:09:2005, 13:40 -->
    <span class="vbquote">(Medevic @ 27:09:2005, 13:40 )</span><!--QuoteEBegin-->Для: jcolor
    Да все правильно. Просто эта функция не работает с вложенными папками. Т.е. сначала надо проверить, создана ли c:\tmp. Если нет, то создать. Потом проверить, создана ли c:\tmp\folder1. И опять создать, если не создана.
    А проще написать свою функцию.
    [snapback]25210" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Спасибо!!
    попробую сейчас так сделать B)))
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-jcolor+27:09:2005, 14:32 -->
    <span class="vbquote">(jcolor @ 27:09:2005, 14:32 )</span><!--QuoteEBegin-->Спасибо!!
    попробую сейчас так сделать smile.gif))
    [snapback]25212" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Делай рекурсивную.
     
Загрузка...

Поделиться этой страницей