Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > На счет файлов...


Автор: Spawn 4.6.2002, 14:51
У меня почему то при сохранении в файл(текстовый), сохраняется лишь часть вводимой информации!

AssignFile(f,'c:\Mac.txt');
{$I-}
Rewrite(f);
{SI+}
if IOResult<>0 then
begin
for i:=0 to n do
writeln(f,Form1.Memo1.Lines[i]);
end;

при этом записывается лишь начальные 9 строк из Memo1, а остальные почемуто не пишет(.Помогите плз разобраться.

Автор: Song 4.6.2002, 15:01
:)
А TMemo.SaveToFile() не подойдёт :-)

Автор: Spawn 4.6.2002, 15:24
Цитата(Song @ 04.6.2002, 16:01)
:)
А TMemo.SaveToFile() не подойдёт :-)

Дело в том,что в файл мне нужно сохранить не только данные, но и кое что еще!!!Даже если я сохраняю в файл при помощи SaveToFile, а потом открываю файл для добавления при помощи Append, то обычным writeln в файл ни чего не дописывается!!

Автор: Vit 4.6.2002, 15:54
А место на диске есть?
А файл не больше 2Gb?
А что происходит - просто не пишет, или выдает какую ошибку?
А может там просто кэшируется запись?
А что ты пишешь? Там не может попасться служебные символы?
А строки которые ты пишешь случайно не могут оказаться длинее 255 символов?
В последнем случае надо писать так:

writeln(f, pointer(s)^);

Иначе у тебя вместо строки запишется 4 байта - указатель на строку.

Автор: Song 4.6.2002, 16:29
Цитата(Guest @ 04.6.2002, 16:24)
[quote=Song,04.6.2002,16:01]:)
то обычным writeln в файл ни чего не дописывается!!

Как это не дописывается?
А какой тип переменной f ?

Автор: Song 4.6.2002, 16:31
>> Иначе у тебя вместо строки запишется 4 байта - указатель на строку.
Вы не правы. Компилятор право не дурак  :)

Автор: RA 4.6.2002, 16:33
А чему равно значение "n" ?

Автор: Vit 4.6.2002, 17:09
Цитата(Song @ 04.6.2002, 08:31)
>> Иначе у тебя вместо строки запишется 4 байта - указатель на строку.
Вы не правы. Компилятор право не дурак  :)

Вы знаете, готов был бы согласится, если бы года 3 назад не столкунулся с этой ситуацией лично, и мне пришлось переделывать штук 40 модулей из-за этого (это была связка Delphi3/Windows95), с тех пор много воды утекло, но воспоминания остались...

Автор: Song 4.6.2002, 17:17
В Д3 соглашусь.
С совремменныж настолько компилятор всё любит выбрасывать... Иногда до смешного выходит.

Например

Var t,n:Extended;

t:=5;
n:=0;
ShowMessage(FloatToStr(t/n));

Думаете будет AV c EMathError ? Хрен, всё подсчитано будет на этапе компиляции и в боксе Вы увидите INF

Автор: Spawn 4.6.2002, 17:47
Спасибо за помощь :D  :D Я нашел свою ошибку)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)