Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> файл, Не могу дописать файл 
:(
    Опции темы
Fir
  Дата 10.3.2005, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 8.2.2005
Где: г.Берёзовский,Све рдл.обл

Репутация: нет
Всего: нет



При повторном объявлении и открытия для дозаписи или перезаписи
выводит error 32 , хотя, если открывать для чтения, то всё нормально.
Чё такое? (файл в предидущих процедурах был закрыт) smile smile smile
PM MAIL ICQ   Вверх
Alex
Дата 10.3.2005, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Ошибка в 17 строке.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
The MASTER
Дата 10.3.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Old master)
**


Профиль
Группа: Участник
Сообщений: 862
Регистрация: 19.7.2004
Где: Санкт-Петербург

Репутация: 2
Всего: 5



Alex Ты что телепат? smile
PM MAIL WWW ICQ   Вверх
Alex
Дата 10.3.2005, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



The MASTER, нет. Просто товарищь Fir думает, что тут форум телепатов.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Fedor
Дата 10.3.2005, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Alex и прикинь, угадаешь smile


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Poseidon
Дата 11.3.2005, 03:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Я думаю Fir еще не понял, почему ему не отвечают! Fir, приведи пример кода! По-моему ошибка пустяковая, так сказать "описка где-нибудь". Так что если будет код, то ты сразу же получишь ответ в чем дело.

PS. хотя 17 строку можешь проверить. А вдруг действительно Alex угадал! smile


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Bes
Дата 11.3.2005, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



1) Не закрыл файл.
2) Не той командой открывает.

PM MAIL   Вверх
p0s0l
Дата 11.3.2005, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Еще один вариант: файл открыт еще какой-нибудь прогой...

Цитата(Alex @ 10.3.2005, 18:26)
Ошибка в 17 строке.
По смыслу надо говорить 13-ая строка... Всё-таки 13 - несчастливое число... Или 666...





--------------------
С уважением, г-н Посол.
PM   Вверх
Fir
Дата 11.3.2005, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 8.2.2005
Где: г.Берёзовский,Све рдл.обл

Репутация: нет
Всего: нет



ВОТ КОД!!! ТЕЛЕПАт - это оскарбление, я инопланетянин. Можно и помоч, мозов не хватает!!
Код

procedure TForm1.BitBtn4Click(Sender: TObject);
var
f:TextFile;
i:integer;
begin
Assignfile(f, fname);
{$I-}
Append(f);
{$I+}
if IOResult<>0 then REwrite(f);
FilePos(f);
writeln(f, #13);
writeln(f, ('###_'+edit1.Text));
for i:=0 to Memo3.Lines.Count do
 begin
  writeln(f, (Memo3.Lines[i]));
 end;
Closefile(f);
end;

PM MAIL ICQ   Вверх
z-END
Дата 11.3.2005, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



ошибок пруд-пруди и конструкция устаревшая лучше использовать TFileStream
делай так:
Код

AssignFile (F, FName);
if FileExists (FName)  then Append (F) else Rewrite (F);
Writeln (F);
For i := 0 to Memo3.Lines.Count - 1 do Writeln(F,Memo3.Lines[i]);
CloseFile (F);





--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Fir
Дата 11.3.2005, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 8.2.2005
Где: г.Берёзовский,Све рдл.обл

Репутация: нет
Всего: нет



За код спасибо, но канает!!!!!!!!!!!!!!!!!
Ошибка времени на строчке
if FileExists (FName) then Append (F) else Rewrite (F);
или как было
Append (F) {Rewrite (F)}
Причём иногда работает, добавляет в файл, а иногда нет!!!!
smile smile smile smile smile smile smile smile smile smile
Добавлено @ 20:29
Пардон за небольшую тупость. Инет ограничен очень сильно smile
PM MAIL ICQ   Вверх
Poseidon
Дата 12.3.2005, 04:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата
Причём иногда работает, добавляет в файл, а иногда нет!!!!
Может быть действительно ты открываешь этот файл в какой-то другой процедуре (или функции). Просмотри весь код. Может где еще встречается открытие этого файла. А то ведь что бы ошибка времени, да еще и через раз! Скорее всего не сакрыл файл где-то.
А вообще, на сколько я вижу, ты сохраняешь весь текст в Мемо в файл. Так почему бы не воспользоваться Memo1.Lines.SaveToFile?
Я конечно вижу, что если файл есть, то нужно его не перезаписать, а добавить. Но ведь и это решаемо без прямой записи в файл.



p0s0l
Цитата
По смыслу надо говорить 13-ая строка... Всё-таки 13 - несчастливое число... Или 666...
На сколько я помню, в резделе Форум программистов -> Разделы помощи -> Раздел помощи, в словаре терминов сказано следующее
Цитата
Ошибка в 17й строке - Ну, нет тут телепатов, нет! Нужен пример кода с которым проблемы, иначе догадаться что вы там делаете невозможно!
Так что...


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
z-END
Дата 12.3.2005, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Fir давай сделаем так:
Код

begin
var 
S: TStringList;
begin
S := TStringList.Create;
try
 If FileExists (FName) then S.LoadFromFile (FName);
  S.Add ('###'+Edit1.Text);
  S.AddStrings (Memo1.Lines);
  S.SaveToFile (FName);
finally
 FreeAndNil (S);
end;


ЗЫ: ты скажи есть ли еще какие нибудь процедуры или процессы которые работают с данным файлом?!
ЗЫЫ: этот код случайно не в таймере висит?!


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Poseidon
Дата 12.3.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



z-END, интересный способ. Это как раз то, что я предлагал выше, использовать SaveToFile. Конечно, код не совсем закончен, т.к. если
Код
not FileExists (FName)
то нужно создать файл и записать в него. Но это уже мелочи. smile


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Vit
Дата 13.3.2005, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Код

procedure TForm1.BitBtn4Click(Sender: TObject);
var
  f:TextFile;
  i:integer;
begin
  Assignfile(f, fname);
  try
    if FileExists(fname) then Append(f) else Rewrite(f);
  except
    on e:exception do 
      begin
         Showmessage('File could not be opened. Error:'+e.message);
         exit;
      end;
  end;
  writeln(f, '');
  writeln(f, ('###_'+edit1.Text));
  for i:=0 to Memo3.Lines.Count-1 do
    writeln(f, (Memo3.Lines[i]));
  Closefile(f);
end;


Примечания к коду

1) Файл надо проверять на наличие а не дожидаться ошибок
2) Применение FilePos(f); для текстовых файлов бессмыслено
3) writeln(f, #13); - вы реально добавите #13#10#13
4) for i:=0 to Memo3.Lines.Count do - тут вас выбьет по range error или запортите память и выбьет где-то ещё, очень нехорошая ошибка, постарайтесь её никогда не делать, её крайне трудно потом отлавливать, посмотрите на мой код


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1229 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.