Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2008, 17:20   #1
|{ot
Форумчанин
 
Аватар для |{ot
 
Регистрация: 09.03.2008
Сообщений: 127
По умолчанию Запись в файл

Здраствуйте!

В файл типа TFileStream я записываю переменную
запись(Type Tbuf = record
t1 ,t2 ,t3 : string;
end;
var buf : Tbuf; )
Записываю примерно 10 раз, но при чтении из этого файла в переменную buf значения совершенно меняются.

Это пример моей программы.

Кто знает в чем ошибка подскажите.
Заранее спасибо!
Вложения
Тип файла: rar файл.rar (185.6 Кб, 14 просмотров)
|{ot вне форума Ответить с цитированием
Старый 03.07.2008, 17:30   #2
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Код:
Buff:array [1..3] of Char//или String, Byte, Integer;
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 03.07.2008, 21:30   #3
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Попробуйте использовать не string, а например string [30]

Код:
Type 
Tbuf = record
t1 ,t2 ,t3 : string[30];
end;
zetrix вне форума Ответить с цитированием
Старый 03.07.2008, 21:58   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Попробуйте использовать не string, а например string [30]
Притом на один байт то ли больше, то ли меньше будет записываться, точно не помню.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.07.2008, 22:19   #5
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Совершенно верно, на 1 байт больше.
В нулевом байте каждой строки (s[0]) содержится длина строки. Т.е. если мы написали t1:string[30]; а потом сделали так: t1:='123'; и потом записали в файл,
то запишется сначало 3 (как байт) - длина нашей строки, потом содержимое строки ("123" - как коды аскии) а потом оставшиеся 27 не использованных байт.

Провёл эксперимент. Оставшиеся 27 байт - далеко не нули.
zetrix вне форума Ответить с цитированием
Старый 03.07.2008, 22:52   #6
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Я это давно зметил, при сохранении в неиспользуемые байты могут писаться предыдущие куски фраз и символов ну и пустые байты в конце, если не были слова занимающие максимальную длину поля в Record.
Alter вне форума Ответить с цитированием
Старый 05.07.2008, 02:24   #7
|{ot
Форумчанин
 
Аватар для |{ot
 
Регистрация: 09.03.2008
Сообщений: 127
По умолчанию

Всем спасибо! Все работает!
|{ot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл Titan123 Общие вопросы Delphi 6 23.08.2008 01:12
Запись в файл [Smarik] Помощь студентам 4 07.05.2008 23:26
Запись в файл С++ Viteks Общие вопросы C/C++ 3 18.04.2008 13:18
запись в файл Prisian Общие вопросы Delphi 6 24.07.2007 13:43