powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена null значений в текстовом файле.
3 сообщений из 3, страница 1 из 1
Замена null значений в текстовом файле.
    #35944287
litegreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый! Подскажите как заменить null-значения на "пробел" в текстовом файле используя VBA для Access2003.

Изначальная задача - взять первые n строк из текстового файла (см код ниже). Проблема в том, что в копии, в строках в которых были null-значения, копируется не вся строка. Т.е. если в изначальном файле было 12345nullnullnull658922122, то в копии я получаю 12345spacespacespacespacespace8922122, т.е. два символа за null тоже заменились на пробел.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Dim l As Long
Const ForReading =  1 
Const TristateUseDefault = - 2 
Const NmbrRows =  30000 
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
strReportFile = "H:\OL\Reports\text.prn"
 
Set objFile = objFSO.getfile(strReportFile)
Set objTextStream = objFile.OpenAsTextStream(ForReading, TristateUseDefault)
   l =  1 
               Do While (l <= NmbrRows And objTextStream.AtEndOfStream = False)
               l = l +  1 
               TextBuff = objTextStream.readline
               TextBuff = Replace(TextBuff, Chr( 0 ), Chr( 32 ))
               objFileTmp.WriteLine (TextBuff)
               Loop
objFileTmp.Close
objTextStream.Close

Через line input я тоже пробовал - та же самая ситуация.
Что в файле есть null-значения я определяю через FAR (hex-редактор)
...
Рейтинг: 0 / 0
Замена null значений в текстовом файле.
    #35945243
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
litegreenИзначальная задача - взять первые n строк из текстового файла (см код ниже). Проблема в том, что в копии, в строках в которых были null-значения, копируется не вся строка. В текстовом файле не бывает null значений. null это специальное состояние переменной не имееющее физического представления. Поэтому при записи в файл оно всегда заменяется на что-то: на пустую строку, на пробел, на надпись (NULL) или на что хватит фантазии.

litegreenТ.е. если в изначальном файле было 12345nullnullnull658922122, то в копии я получаю
....
Что в файле есть null-значения я определяю через FAR (hex-редактор)Если он тебе показывает картинку типа:
31 32 33 34 35 00 00 00 36 35 38 ....
То этот файл ты не сможешь прочитать как TextStream. TextStream не любит нулевые байтики.

litegreenЧерез line input я тоже пробовал - та же самая ситуация.А надо через простой input.
Код: plaintext
1.
2.
3.
4.
5.
6.
dim a as integer
open "H:\OL\Reports\text.prn" for binary access read as # 1  len= 1 
do while not eof( 1 )
   input # 1 , a
   debug.print a
loop
close # 1 
...
Рейтинг: 0 / 0
Замена null значений в текстовом файле.
    #35947294
litegreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlА надо через простой input.
Код: plaintext
1.
2.
3.
4.
5.
6.
dim a as integer
open "H:\OL\Reports\text.prn" for binary access read as # 1  len= 1 
do while not eof( 1 )
   input # 1 , a
   debug.print a
loop
close # 1 

Я попробовал вот такой вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Open "H:\OL\Reports\text.prn" For Binary Access Read As # 1  Len =  1 
Open "H:\OL\Reports\text1.prn" For Output As # 2 
Do While Not EOF( 1 )
   Input # 1 , a
   Write # 2 , a
Loop
Close # 1 
Close # 2 
При этом следуящая строка:
6430005158543201764816210409102945799406007483 D M8120N82600000005360007
разбивается на две строки и число преобразуется в странный формат:
6.4300051585432E+45
"D M8120N82600000005360007"
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена null значений в текстовом файле.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]