![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Maksim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 5.4.2004 Репутация: нет Всего: нет |
Привет! Подскажите, до какого while делать цикл чтобы прочитать из файла, содержащего некоторое кол-во записей, все эти записи и вовремя остановиться? Пробовал while(file.GetLength() != file.GetPosition()), но после первого Сериалайза file.GetPosition() становится в конец файла (строка ULONGLONG c = file.GetPosition(); просто для проверки тут). Но если сделать while(1), например, то все записи по очереди прочитаются и куда надо отправятся, несмотря на то что file.GetPosition() будет в конце файла после первого же прочтения... Когда остановиться? Подразумевается что кол-во записей неизвестно... Мож вообще всё по другому надо делать? Ещё вопрос: как в диалоговом окне расставить ТабСтопы у полей ввода и пр.? Спасибо. |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Хм.. ну вообще то IMHO Serialize() устанавливает указатель в конец файла...
Често скажу я не понял смысл этой проги.. --------------------
|
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Потому что CArchive читает большими кусками в буфер, и сериализация (т.е. вызовы операторов << и >>) идёт не из файла а из буфера. Получается аналог потоков iostream.
Смысл сериализации - перевод объекта (-ов) в последовательную форму и обратно. Этот механизм используется в MFC и в .NET Framework. Насчёт цикла. Вместо while нужно сделать цикл for, и количество записей сохранять/читать перед первой записью - тогда всё будет работать ok. -------------------- ![]() |
||||
|
|||||
| Maksim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 5.4.2004 Репутация: нет Всего: нет |
Спасибо. Я об этом варианте думал, но надеялся что можно как-то по другому, поэтому и написал что мол кол-во записей неизвестно... А то имхо не красиво получается... Мож попробовать с этим буфером лучше поработать... А как с ТабСтопами? Я извиняюсь за некоторую чайниковость, но VC только с этого понедельника осваивать начал... В Дельфях можно было прям в свойствах полей указать когда на каком останавливаться... |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Сорри, вопрос не понятен. Причём здесь табстопы ? Имеется ввиду символ-признак окончания последовательности (терминатор) или это уже другой вопрос ? -------------------- ![]() |
|||
|
||||
| Maksim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 5.4.2004 Репутация: нет Всего: нет |
Это другой вопрос
Но уже разобрался вроде - всё ручками делать надо... С записью в файл тоже разобрался... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |