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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2010, 21:43   #1
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию Добавить в файл строку(ошибка)

Здравствуйте, пытаюсь добавить(не перезаписывая!) в файл строки. Получаю вот это:


Вот код:
Код:
var s:string;
    f1,f2:System.Text;
begin
getdir(0,s);
    AssignFile(f1,s+'\system1.dll');
    Reset(f1);
    writeln(f1,'['+edit1.text+']');//на вот этой строке. а если писать rewrite то все ок.
    writeln(f1,edit2.text+'\'+edit1.text+'.dll');
    CloseFile(f1);
Что не так?
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 08.12.2010, 22:05   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Reset не открывает на запись текстовые файлы.
Выход: Rewrite или Append
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 08.12.2010, 22:16   #3
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Спасибо большое Append - именно то, что нужно)))
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 08.12.2010, 23:42   #4
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Короче кому интересно - на основе этих двух функций слепил кентаврика)))
Код:
try          //на случай если файла не существует
{тут Аппент}
except
{тут rewrite}
end;
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 13.01.2011, 15:04   #5
beseda2408
Новичок
Джуниор
 
Регистрация: 13.01.2011
Сообщений: 4
По умолчанию

У меня подобный вопрос.
Append добавляет строки к концу файла
Rewrite перезаписывает файл и начинает добавлять строки сначала.

А как сделать так, чтобы в существующем текстовом файле из 10 строк изменить 5 строку, иными словами заменить ее из переменной типа string?
beseda2408 вне форума Ответить с цитированием
Старый 13.01.2011, 15:11   #6
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Тут создаешь стринглист и с ним работаешь
Код:
var a:TStringlist;
begin
  a:=tstringlist.create;
  a.loadfromfile('путь');
  a[номер строки -1]:='текст';
  a.savetofile('Путь');
end;
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 13.01.2011, 15:43   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

согласен.

Цитата:
Сообщение от beseda2408
А как сделать так, чтобы в существующем текстовом файле из 10 строк изменить 5 строку, иными словами заменить ее из переменной типа string?
Цитата:
Сообщение от MyLastHit
Тут создаешь стринглист и с ним работаешь
позволю себе чуть пояснить вариант MyLastHit

Вы грузите Ваш текстовый файл целиком в память.
Изменяете как хотите (хоть строчки меняете, хоть добавляете, хоть удаляете).
Полученные изменения пишете в исходный текстовый файл (перезаписав его полностью).

в 99.9% подобный подход вполне себе оправдан и достоин применения.
Оставшиеся доли процента - это шаманство и хакерство (и, соответственно, для нормального программиста непримелимо).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.01.2011, 16:31   #8
beseda2408
Новичок
Джуниор
 
Регистрация: 13.01.2011
Сообщений: 4
По умолчанию

Я думаю это и есть решение моей проблемы.
Serge_Bliznykov, MyLastHit большое спасибо за помощь.
beseda2408 вне форума Ответить с цитированием
Старый 13.01.2011, 21:39   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

только надо обязательно освободить ресурс после использования.
после a.savetofile('Путь');
надо
Код:
 a.Free;
или, в большинстве случае более удобно использовать процедуру, которая не только освободит память, но и присвоит указателю ссылку nil:
Код:
FreeAndNil(a);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.01.2011, 02:03   #10
beseda2408
Новичок
Джуниор
 
Регистрация: 13.01.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
только надо обязательно освободить ресурс после использования.
после a.savetofile('Путь');
надо
Код:
 a.Free;
или, в большинстве случае более удобно использовать процедуру, которая не только освободит память, но и присвоит указателю ссылку nil:
Код:
FreeAndNil(a);
Благодарю за полезные замечания!
beseda2408 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить строку SkrudjMakdak Microsoft Office Excel 1 05.09.2010 18:06
Добавить строку в TStringList мимо Общие вопросы Delphi 11 17.02.2010 18:42
C#: Добавить, Изменить и удалить строку в бд Veiron Общие вопросы .NET 1 10.06.2009 09:25
Добавить строку в ДБГрид и удалить MbIJIO БД в Delphi 4 18.04.2009 12:45
как добавить строку в конец строки Damhurz PHP 4 16.04.2009 14:35