Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Для новичков > Строки и файлы |
Автор: PsiMagistr 9.7.2010, 17:01 | ||||||
Ребята, если вам не сложно обясните мне следующую вещь. Записываю строку в файл через FileStream: (Я в курсе что есть более удобные способы) Объявляем глобально:
Обработчик кнопки записи:
А теперь пытаемся прочесть. Обработчик кнопки чтения:
Я думал, что допустим запишем в файл строку из 255 символов, а считаем меньшей по размеру переменной только первые 4. Не тут то было. Получил каракули. Если переменная для чтения равна по длине переменной для записи - все проходит как по маслу... |
Автор: Amphiluke 9.7.2010, 18:43 | ||
А вы помните, что символ с индексом 0 содержит длину строки? Вот вы читаете кусок строки, а нулевой символ этой строки неизменно остается равным длине исходной строки. Попробуйте:
|
Автор: PsiMagistr 9.7.2010, 18:48 |
т.е. Идет попытка считывания 0 символа? Я признаться не совсем понял. |
Автор: Amphiluke 9.7.2010, 18:55 |
Ну, вы сначала пишете в файл, допустим, строку 'qwerty'. Записывается 7 байтов, из которых первый (нулевой) — #6. Затем прочитываете строку типа string[4]. Ее размер — 5. Нулевой символ строки устанавливается в #6, что не соответствует изначальному #4. Отсюда лишние каракули в хвосте. |
Автор: PsiMagistr 9.7.2010, 19:07 |
Amphiluke, БЛИН, не ну какой дуб, однако. СПАСИБО Большое. Тупею от жары, чисто тупею. |