Помогите найти ошибку (запись в файл) |
Здравствуйте, гость ( Вход | Регистрация )
Помогите найти ошибку (запись в файл) |
++Norton++ |
11.10.2008, 13:17
Сообщение
#1
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Есть функция, которая выполняет запись в файл:
Дело в том, что при ее первом вызове, все работает нормально. Если следом ее вызвать второй раз, она просто создает пустой файл (т.е. пробрасывает стадию while(!in.atEnd)). Что может быть не так?
Причина редактирования: форматирование понагляднее и скобка потерялась
|
|
|
AD |
11.10.2008, 14:19
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Ну насколько я понимаю, тебе следует каким-нибудь образом указать потоку ввода stdin, чтобы он переместил указатель на начало и считывал введенные данные по новой. Как именно, почитай QIODevice, QFile.
|
|
|
Litkevich Yuriy |
11.10.2008, 16:45
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Tonal |
11.10.2008, 19:19
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
И чё тут странного?
Ты в первый раз выгребаешь всё из stdin. Во второй запуск там естественно уже ничего нет - он как встал в режим atEnd в первый раз, так там и стоит. |
|
|
++Norton++ |
11.10.2008, 22:28
Сообщение
#5
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Litkevich Yuriy, эта строчка читает со стандартного ввода линию и заносит ее в QStringList.
На счет режима atEnd()... а можно как-нибудь вывести из этого режима, чтобы и при последующих запусках все работало как надо? |
|
|
AD |
11.10.2008, 22:34
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Litkevich Yuriy, эта строчка читает со стандартного ввода линию и заносит ее в QStringList. На счет режима atEnd()... а можно как-нибудь вывести из этого режима, чтобы и при последующих запусках все работало как надо? Объясните корректно, пожалуйста, чего Вы хотите добиться. Неясно какой результат нужен! ))) |
|
|
Litkevich Yuriy |
11.10.2008, 22:40
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
со стандартного ввода линию и читает строку, а сама строка чем заканчивается? <Ctrl>+<D>? т.е. это не прерывает ввод данных, а только сигналит о завершении строки?Я так понимаю ты все это делаешь в GNU/Linux Объясните корректно, пожалуйста, чего Вы хотите добиться. Неясно какой результат нужен! ))) Присоеденяюсь.Лучше объясни каков должен быть результат работы модуля/программы, возможно все проще. |
|
|
++Norton++ |
11.10.2008, 22:44
Сообщение
#8
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Да, все делаю в Linux.
Просто нужна функция, которая работала бы аналогично линуксовой команде (cat > file.name). Т.е. читала строку за строкой что вводит пользователь и потом записывала в файл. Если пользователь нажимает Enter, нужно просто перейти на следующую строку, но не закончить выполнение. Закончить выполнение нужно тогда, когда пользователь нажмет ctrl+D. Сообщение отредактировал ++Norton++ - 11.10.2008, 22:45 |
|
|
AD |
11.10.2008, 22:53
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Да, все делаю в Linux. Просто нужна функция, которая работала бы аналогично линуксовой команде (cat > file.name). Т.е. читала строку за строкой что вводит пользователь и потом записывала в файл. Если пользователь нажимает Enter, нужно просто перейти на следующую строку, но не закончить выполнение. Закончить выполнение нужно тогда, когда пользователь нажмет ctrl+D. Хорошо, а как она делает по тому коду, что здесь был приведен? Не работаю в Линукс, поэтому смогу помочь, когда узнаю все подробности! ))) |
|
|
Litkevich Yuriy |
11.10.2008, 23:00
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 30.1.2025, 3:49 |