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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2009, 18:45   #1
nolz
Пользователь
 
Регистрация: 30.08.2009
Сообщений: 35
По умолчанию Добавление строчки в текстовый файл

имеется следуюший кусок кода
Цитата:
procedure TForm2.Button1Click(Sender: TObject);
var
f:textfile;
s:string;
begin
assignfile(f,'data\prov.qxt');
reset(f,s);
rewrite(f);
s:=edit1.Text+edit2.Text+edit3.Text ;
writeln(f,'data\prov.qxt',s);
closefile(f);
end;
prov.qxt это текстовый файл
при компиляции всё хорошо, а вот когда скомпеленная программа должна записать строку s в файл f вылазиет ошибка I/O error 105,
в чём причина такой ошибки?
nolz вне форума Ответить с цитированием
Старый 23.11.2009, 18:49   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

либо
Код:
reset(f);
либо
Код:
rewrite(f);
вы бы определились для чего вам файл открывать
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 23.11.2009, 18:54   #3
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Ну и зачем же вы открываете файл сначала для чтения и записи (reset), а потом очищаете и открываете только для записи (rewrite)?
Выбирайте что-нибудь одно. В вашем случае надо оставить только reset.
Да и параметр у reset только один. И с writeln напортачили.
Еще, не плохо бы сделать проверку на исключительные ситуации (try..finally..end можете посмотреть в google)
Путь к файлу тоже немного исправить надо.
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
 f: textfile;
 s: string;
begin
 assignfile(f, ExtractFilePath(ParamStr(0)) + 'data\prov.qxt');
 try
  reset(f);
  s := edit1.Text + edit2.Text + edit3.Text;
  writeln(f, s);
 finally
  closefile(f);
 end;
end;
Не плохо бы вам почитать книжечку по Delphi...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.

Последний раз редактировалось Neeter; 23.11.2009 в 18:56.
Neeter вне форума Ответить с цитированием
Старый 23.11.2009, 19:10   #4
nolz
Пользователь
 
Регистрация: 30.08.2009
Сообщений: 35
По умолчанию

Neeter, спасибо за совет, учту.
Но в том коде что вы предложили возникает точно такая же ошибка.
nolz вне форума Ответить с цитированием
Старый 23.11.2009, 19:17   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Для работы с текстовыми файлами лучше использовать TStringList
FaTaL вне форума Ответить с цитированием
Старый 23.11.2009, 19:18   #6
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Ну... Попробуйте что ли вот так:
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
 f: textfile;
 s: string;
begin
 assignfile(f, ExtractFilePath(ParamStr(0)) + 'data\prov.qxt');
 try
  FileMode := fmOpenWrite;
  reset(f);
  s := edit1.Text + edit2.Text + edit3.Text;
  writeln(f, s);
 finally
  closefile(f);
 end;
end;
Или, на самом деле, послушайте совета FaTaL.

Вот:
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
 f: TStings;
 s: string;
begin
 f := TStringList.Create;
 try
  f.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'data\prov.qxt');
  s := edit1.Text + edit2.Text + edit3.Text;
  f.Add(s);
  f.SaveToFile(ExtractFilePath(ParamStr(0)) + 'data\prov.qxt');
 finally
  f.Free;
 end;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.

Последний раз редактировалось Neeter; 23.11.2009 в 19:22.
Neeter вне форума Ответить с цитированием
Старый 23.11.2009, 19:43   #7
nolz
Пользователь
 
Регистрация: 30.08.2009
Сообщений: 35
По умолчанию

всем спасибо
Параллельно возник другой вопрос, как теперь удалить определённую строчку в текстовом документе.
У меня есть предположение что через listbox, а потом перезаписать текстовый документ, но с алгоритмизацией проблемы.
nolz вне форума Ответить с цитированием
Старый 23.11.2009, 19:50   #8
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Цитата:
Параллельно возник другой вопрос, как теперь удалить определённую строчку в текстовом документе.
У меня есть предположение что через listbox, а потом перезаписать текстовый документ, но с алгоритмизацией проблемы.
Тоже через TStringList.
У него есть метод Delete, который удаляет строку. Параметр для метода: индекс нужной строчки.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 23.11.2009, 19:54   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

nolz возьмите пример из пост #6 (c) Neeter
только вместо добавления строки f.Add...
напишите f.Delete(Номер_Строки)
и всё....

___________________________________ _
добавлено уп-с... не успел...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.11.2009, 20:05   #10
nolz
Пользователь
 
Регистрация: 30.08.2009
Сообщений: 35
По умолчанию

если я всё правилно понял то это должно выглядеть так:
Цитата:
procedure TForm1.Button3Click(Sender: TObject);
var
f: TStrings;
s:string; n:integer;
begin
n:=listbox1.ItemIndex;
f := TStringList.Create;
try
f.LoadFromFile(ExtractFilePath(Para mStr(0)) + 'data\fio.qxt');
f.Delete(n+1);
finally
f.Free;
end;
end;
но удаление строки не происходит, что то не так?
И ещё вопрос нумерация строк в TStringLis идёт с 0 как в listbox или с 1?
nolz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как текстовый файл в формате word 2007 переделать в файл в формате ZAY JULIA Microsoft Office Word 13 09.06.2010 19:43
Текстовый файл Mashul'ka Помощь студентам 2 22.05.2009 00:07
Текстовый файл. Mashul'ka Помощь студентам 1 14.05.2009 18:22
как сохранить строчки в TXT файл Ярослав Помощь студентам 2 17.05.2008 18:43
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55