Добавить запись в файл

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Добавить запись в файл

Сообщение Алексей К. » 17.09.2004 (Пт) 9:33

Есть текстовый "файл.txt" файл с содержанием:
1
2
3
4
5

Я хочу добавить еще запись в конец:
Код: Выделить всё
i=6
open "файл.txt" for output as #1
print #1, i
close #1

Так вот старые удаляются, остается в нем только 6. А мне надо что бы файл увеличивался записями. Можно конечно считать все старые записи в другой файл, добавить новые записи, закрыть файл, перименовать в старый файл. Может как-нибудь по проще можно?

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 17.09.2004 (Пт) 9:59

not For Open, but For Append
т.е. вместо:
Код: Выделить всё
open "файл.txt" for output as #1
надо использовать:
Код: Выделить всё
open "файл.txt" for append as #1

тогда все, что ты будеш в этот файл писать, будет добавлятся в конец файла
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 17.09.2004 (Пт) 10:15

Спасибочки!!! :D

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 17.09.2004 (Пт) 10:28

Работает...
Но добавляет запись в конец последней строки:
1
2
3
4
56

А надо в новую строку
1
2
3
4
5
6

????

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 17.09.2004 (Пт) 10:35

print #1, vbcrlf & "6"

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 17.09.2004 (Пт) 12:08

1-я новая запись записывается в след. строке после последней старой.
Код: Выделить всё
print #1, vbcrlf&"6"
for i=7 to 8
print #1,i
next i

1
2
3
4
5
6
- первое добавление
7
8

9
повторное добаление записей в файл


Но в конце появляется пустая строка. А мне надо чтоб не было пустых строк. Как от не избавиться?

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 17.09.2004 (Пт) 12:13

Алексей К. писал(а):Работает...
Но добавляет запись в конец последней строки:
1
2
3
4
56

А надо в новую строку
1
2
3
4
5
6

????


Так получается, если ты записал данные и конце нет пустой строки!

Сделай так:
1
2
3
4
5

После 5 оставь пустую строку и используй код:
Код: Выделить всё
i=6
open "файл.txt" for output as #1
write #1, i
close #1

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 17.09.2004 (Пт) 12:26

Пустых строк в файле вообще недолжно быть!

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 17.09.2004 (Пт) 12:29

Алексей К. писал(а):Пустых строк в файле вообще недолжно быть!

Нет, после всех записей, должна быть. Типа как признак конца файла

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.09.2004 (Пт) 12:34

Признак конца файла - Chr(26) :-)
Изображение

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 17.09.2004 (Пт) 12:36

Вот этот гадкий признак при втором append и превращается в пустую строку в середине файла. Походу так и придется через файл-копию делать.

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 17.09.2004 (Пт) 12:38

Объясните вы человеку на пальцах:
То Алексей К.:
Смотри, открываешь свой файл в текстовом редакторе, нажимешь Ctrl+End это перейти в конец файла, если у тебя курсор остановился в той же строке где и последняя запись (типа 5|)
то нажми Enter курсор перейдет на следующую строку после 5. Все закрывай файл и теперь все писаться у тебя как надо будет.
Если руки кривые, то не надо ругать разработчиков.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 17.09.2004 (Пт) 12:38

Алексей К. писал(а):Вот этот гадкий признак при втором append и превращается в пустую строку в середине файла. Походу так и придется через файл-копию делать.

Я не могу понять, почему тебе нельзя использовать пустую строку в конце???

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.09.2004 (Пт) 12:51

XPraptor писал(а):Объясните вы человеку на пальцах:

Вищишь средний? :)

Алексей К., посмотри свой файл в Hex-режиме, увидишь, что новая строка это не что-то непостижимое и таинственное, а обычные два байта, <OD><OA>. Если ты пишешь Print #1, text, то VB за тебя добавит в конце строки эти два символа (перенос строки). Если напишешь Print #1, text;, то VB ничего добавлять не будет. И тогда тебе надо будет впоследствии писать Print #1, vbNewLine & text.
Lasciate ogni speranza, voi ch'entrate.

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 17.09.2004 (Пт) 12:55

Этот файл создается в процессе работы моей программы, в него записываются определенные записи. В процессе работы программа добавляет в него через опр. время еще записи. По определению программы - в фале не должно быть пустых строк (так программа работает). Так что никакие тут F4 и editors не прокатят.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.09.2004 (Пт) 12:58

Значит исправляй код своей программы так, чтобы он правильно расставлял переносы строк.
Lasciate ogni speranza, voi ch'entrate.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 22.09.2004 (Ср) 12:34

Может фсо тебе поможет? оч.удобная штука.
Я знаю верный путь


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList