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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 01:15   #1
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
Вопрос Не пойму где проблема с FileExist

Доброй ночи гуру кодинга.

Есть следующая задача:
при нажатии кнопки на форме проверить - если текстовый файл существует, то открыть его и добавить перед третьей строкой новую строчку текста. Если файл не существует - то создать его и заполнить текстом.

Решение ниже:

Код:
preload:TextFile;
При нажатии клавиши:

Код:
AssignFile(preload, 'C:\Program Files\wtf.txt');
if not FileExists('C:\Program Files\wtf.txt') then CreateFilepr else AddFilepr;
и две процедуры

Код:
procedure TForm1.AddFilepr;
begin
  reset(preload);
  seekeoln(preload);
  seekeoln(preload);
  Writeln (preload,'call SetPlayerTechMaxAllowed(Player(15),'+'1'+','+'test'+')');
  CloseFile(preload);
end;
Код:
procedure TForm1.CreateFilepr;
 begin
      Rewrite(preload);
      Writeln (preload,'function PreloadFiles takes nothing returns nothing');
      Writeln (preload,'call Preload( "")');
      Writeln (preload,'call SetPlayerTechMaxAllowed(Player(15),'+'1'+','+'testCode'+')');
      Writeln (preload,'call Preload( "")');
      Writeln (preload,'endfunction');
      Writeln (preload,'function recyclebin takes nothing returns nothing');
      Writeln (preload,'call PreloadEnd( 0.0 )');
      Writeln (preload,'endfunction');
      CloseFile(preload);
  end;
Результат: задача не выполняется. Файл не создается а если и создается(после небольшой правки кода) - то информация не добавляется как надо. Помогите пожалуйста решить проблему и разобраться что тут не так =\
Fakov вне форума Ответить с цитированием
Старый 15.12.2012, 01:34   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Вариант, конечно, не такой, как у Вас, но работать будет.
А суть в том, чтобы использовать TstringList.
Создаете обект Списка строк.
Проверяете сначала, есть ли такой файл.
Методом LoadFromFile загружаете текст. Без проблем добавляете нужные строки, а потом SaveToFile('путь').
Думаю, проблем не должно быть, но я не знаю, подойдет ли Вам такой варинт.
Delphi_ProGer вне форума Ответить с цитированием
Старый 15.12.2012, 01:44   #3
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

спасибо за вариант, а пример как его использовать есть? или хотя бы ссылку на конкретную схему?)
Fakov вне форума Ответить с цитированием
Старый 15.12.2012, 01:53   #4
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Как то так...
Код:
var
 lst: TStringList;
begin
lst:=TstringList.Create;
lst.LoadFromFile('...');
lst.Insert(2, 'Ваш_текст');
lst.SaveToFile('...');
lst.free;
end;
Delphi_ProGer вне форума Ответить с цитированием
Старый 15.12.2012, 02:20   #5
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

ну то есть получается программа будет дейтстовать с файлом не "снаружи" а "внтури" себя скажем так?
Fakov вне форума Ответить с цитированием
Старый 15.12.2012, 02:44   #6
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Сообщение от Fakov Посмотреть сообщение
ну то есть получается программа будет дейтстовать с файлом не "снаружи" а "внтури" себя скажем так?
Емс...что-то не понял, что Вы представяете под этими словами
Delphi_ProGer вне форума Ответить с цитированием
Старый 15.12.2012, 13:26   #7
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

братцы, еще какие нибудь варианты решения задачи есть?
Fakov вне форума Ответить с цитированием
Старый 15.12.2012, 13:41   #8
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Файл должен нормально создаваться (если пути существуют).
В текстовый файл добавляют не через reset, а через append (если не требуется что-то сверхъестественное)
eoln вне форума Ответить с цитированием
Старый 15.12.2012, 14:08   #9
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

файл создал. магическими танцами, но создал, как положено. Проблема сместилась: повторное обращение к файлу для добавления строки процедурой AddFilepr вызывает сначала i\o error 104 а потом меняет на i\o error 32. Поиск по гуглу проблему не конкретизировал, в чем сейчас ошибка?

Изменил только проверку существования файла:

Код:
AssignFile(preload, 'C:\Program Files\wtf.txt');
if FileExists('C:\Program Files\wtf.txt') then  AddFilepr else CreateFilepr;
Fakov вне форума Ответить с цитированием
Старый 15.12.2012, 15:19   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
для добавления строки
Тогда нужно не reset() а Append() чтоб открыть файл для добавления
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не пойму где хранится Predator199 JavaScript, Ajax 30 30.10.2012 01:18
написал программу, где то ошибка, не пойму где... Kelevra91 Общие вопросы C/C++ 5 17.01.2011 16:38
Не пойму где ошибка.. Den9I Microsoft Office Excel 17 02.12.2010 01:53
где-то ошибаюсь, а где не пойму!укажите ошибку <<Katushka>> Общие вопросы C/C++ 2 15.05.2010 11:41
Не пойму где ошибка Айдар Работа с сетью в Delphi 1 17.04.2010 18:20