Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с txt, Работа с txt 
V
    Опции темы
Keeeeep
Дата 30.6.2008, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.6.2008

Репутация: нет
Всего: нет



Необходима помощь.  smile 

Имеется документ txt, который заполняется из проекта. Все заполняется вроде бы нормально, но не могу избавиться от последней (пустой) строки, которая создается автоматически.

Текст программы:

Код

Do
        Open App.Path & "\dbgmsg.txt" For Append As #1
        Print #1, txtText.Text
        Close #1
        
Data1.Recordset.MoveNext
If txtText.Text = "" Then Exit Do
Loop


Уважаемые программисты подскажите как удалить последнюю строку в текстовом документе. 

Это сообщение отредактировал(а) Akina - 1.7.2008, 16:35
PM MAIL   Вверх
Akina
Дата 30.6.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Keeeeep @  30.6.2008,  17:52 Найти цитируемый пост)
не могу избавиться от последней (пустой) строки

Ты хочешь сказать, что в получающемся файле последние 4 байта - это 0x0D,0x0A,0x0D,0x0A? не верю.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Keeeeep
Дата 1.7.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.6.2008

Репутация: нет
Всего: нет



Я имею ввиду, что при заполнении документа автомитически переносится на следующую строку. Мне необходима команда которая работает как Backspace
PM MAIL   Вверх
Akina
Дата 1.7.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



В таком случае речь идет о том, чтобы не было перевода строки в последней строке?
Теоретически это делается элементарно
Код

Print #1, txtText.Text;

Однако в этом случае не появится перевода строки между строками. Можно вывернуться так: 
Код

Print #1, vbNewLine; txtText.Text;

Но тогда будет появляться пустая строка в начале файла.

Так что наиболее разумно открывать файл не Append, а Binary, делать Seek в конец, после чего помещать туда данные при помощи Put. Тогда всегда можно проверить текущий указатель записи на ноль, и если нет - добавить сначала перевод строки.

Добавлено @ 16:36
Вот только навылет не понимаю, зачем на каждом обороте цикла надо переоткрывать файл...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
JusTalionis
Дата 2.7.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Не надо Binary, это лишний (в данном случае) огород. Просто переносим перевод строки в начало строки:
Код

 . . .
If Lof(1)>0 Then Print #1,
Print #1, txtText.Text;
 . . .


Точка с запятой в конце орератора Print подавляет перевод строки (которым и создавалась пустая строка в конце).
А If предотвращает появление пустой строки в самом начале файла.

Добавлено через 4 минуты и 46 секунд
ЗЫ:
а если надо просто всё в одну строку - то точка с запятой в конце Принт-а - и проблема решена.

PM MAIL   Вверх
Keeeeep
Дата 3.7.2008, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.6.2008

Репутация: нет
Всего: нет



Большое спасибо, проблема решена.

Если будет еще какая нибудь интересная информация по этой теме, я с удовольствием почитаю Ваши заметки.
PM MAIL   Вверх
Akina
Дата 3.7.2008, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(JusTalionis @  2.7.2008,  21:30 Найти цитируемый пост)
Не надо Binary, это лишний (в данном случае) огород.

Не согласен. В данном случае это будет соответстве кода логике процесса.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
XOXOJI
Дата 21.9.2008, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: 2
Всего: 2



В конце в текстбоксе стоит такой символ chr(13) ты когда в файл сохраняешь убери последний символ, а точнее
Код

Print #1, Left$(txtText.Text,len(txtText.Text)-1)

PM MAIL   Вверх
JusTalionis
Дата 21.9.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Там на самом деле их два: Chr$(13) и Chr$(10).  Хотя некоторые редакторы с nix-овской родословной действительно ставят один. Так что лучше не убирать, а делать чтоб они сразу не появлялись, во избежание ненужных заморочек.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.