| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||
Дело в том,что в файл мне нужно сохранить не только данные, но и кое что еще!!!Даже если я сохраняю в файл при помощи SaveToFile, а потом открываю файл для добавления при помощи Append, то обычным writeln в файл ни чего не дописывается!! |
| Автор: Vit 4.6.2002, 15:54 |
| А место на диске есть? А файл не больше 2Gb? А что происходит - просто не пишет, или выдает какую ошибку? А может там просто кэшируется запись? А что ты пишешь? Там не может попасться служебные символы? А строки которые ты пишешь случайно не могут оказаться длинее 255 символов? В последнем случае надо писать так: writeln(f, pointer(s)^); Иначе у тебя вместо строки запишется 4 байта - указатель на строку. |
| Автор: Song 4.6.2002, 16:29 | ||
Как это не дописывается? А какой тип переменной f ? |
| Автор: Song 4.6.2002, 16:31 |
| >> Иначе у тебя вместо строки запишется 4 байта - указатель на строку. Вы не правы. Компилятор право не дурак |
| Автор: RA 4.6.2002, 16:33 |
| А чему равно значение "n" ? |
| Автор: Vit 4.6.2002, 17:09 | ||
Вы знаете, готов был бы согласится, если бы года 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 |
| Спасибо за помощь |