запись в файл

  • Автор темы jcolor
  • Дата начала
J

jcolor

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

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

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

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#2
Перевод строки для текстового файла - это правильно. Иначе все сольется в одну кучу. Если тебе так надо, то просто сформируй строку нужной длины и запиши.
Или используй бинарные файлы.
 
J

jcolor

Гость
#3
<!--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]

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

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

спасибо
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#4
Для: jcolor
Получается да. Т.к. строка занимает 2 байта на символ, то целиком строку записать не получится.
 
D

Domino6

Гость
#6
<!--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

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

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

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

jcolor

Гость
#8
<!--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]

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#9
Для: jcolor
Я посмотрел. Через NotesStream точно можно.
Делается так:

Код:
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 будут писаться нормально.
 
J

jcolor

Гость
#10
<!--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]

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

jcolor

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

Код:
Dim path As String

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

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#12
Для: jcolor
Да все правильно. Просто эта функция не работает с вложенными папками. Т.е. сначала надо проверить, создана ли c:\tmp. Если нет, то создать. Потом проверить, создана ли c:\tmp\folder1. И опять создать, если не создана.
А проще написать свою функцию.
 
J

jcolor

Гость
#13
<!--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)))
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#14
<!--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]
Делай рекурсивную.