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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2013, 20:03   #1
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию Запись текста в файл.

Опять прошу помощи!
Вообщем, есть текстовый файл.
Такая задача: открыть текстовый файл, дойти до определенной строки и вставить после неё свой текст. Закрыть и сохранить файл.
Вот такой с использованием TStringList получился:
Код:
var
  TList : TStringList;
  i: integer;
  line: integer;
begin
  TList := TStringList.Create;
  TList.LoadFromFile('Тут мой файл');
  for i := 0 to TList.Count do
  begin
    if pos ('"last_version":', TList.Strings[i]) > 0 then
    begin
      Line := i + 2;
      break;
    end;
  end;
  if line > 0 then
  begin
    TList.Insert(Line, 'Тут текст, который вставлять');
    TList.SaveToFile('Тут мой файл');
    Halt;
  end
  else
  begin
    Halt;
  end;
  TList.Free;
end;
Но нужен такой вариант на WinApi. Чтобы не использовались никакие доп. модули (например, здесь используется Classes). Помогите.
RageGod вне форума Ответить с цитированием
Старый 02.05.2013, 21:56   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Открываете два файла - один на ввод, другой - на вывод.
Начало цикла.
Читаете строку из входного файла.
Пишете ее в выходной файл.
Сравниваете (эту же) строку с образцом. Если совпала - пишете в выходной файл также дополнительную строку.
Если входной файл не закончился - на начало цикла.
Закрываем оба файла.
s-andriano вне форума Ответить с цитированием
Старый 02.05.2013, 22:39   #3
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Открываете два файла - один на ввод, другой - на вывод.
Начало цикла.
Читаете строку из входного файла.
Пишете ее в выходной файл.
Сравниваете (эту же) строку с образцом. Если совпала - пишете в выходной файл также дополнительную строку.
Если входной файл не закончился - на начало цикла.
Закрываем оба файла.
В принципе алгоритм понятен.
Помочь хотя бы с тем, какие функции и процедуры использовать можете, пожалуйста?
RageGod вне форума Ответить с цитированием
Старый 02.05.2013, 22:55   #4
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Ну такое загуглить несложно... "WinApi работа с файлами Delphi"
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 02.05.2013, 23:45   #5
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
Ну такое загуглить несложно... "WinApi работа с файлами Delphi"
Гуглил. В гугле дают только варианты работы с добавление в конец файла или перезапись всего файла. Найти действительно что-то, описывающее добавление файла по заданной координате, не удалось!
RageGod вне форума Ответить с цитированием
Старый 03.05.2013, 00:06   #6
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от RageGod Посмотреть сообщение
Гуглил. В гугле дают только варианты работы с добавление в конец файла или перезапись всего файла. Найти действительно что-то, описывающее добавление файла по заданной координате, не удалось!
Так тебе и нужна перезапись всего файла, только по строкам.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 03.05.2013, 00:55   #7
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
Так тебе и нужна перезапись всего файла, только по строкам.
Я имел в виду, что там либо в конец файла, либо полностью очистить файл и записать что-то новое.
Вы меня не так понимаете. Мне всего лишь надо вставить строчку в определенное место.
RageGod вне форума Ответить с цитированием
Старый 03.05.2013, 00:59   #8
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

ну так полной перезаписью это и делается... создается массив строк, или вовсе поток, копируются туда изначальные данные, в середину вставляются нужные дополнительные данные, затем все записывается в чистый файл.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 03.05.2013, 01:01   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Мне всего лишь надо вставить строчку в определенное место.
реальность такова, что этопрактически не возможно
eval вне форума Ответить с цитированием
Старый 03.05.2013, 01:06   #10
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
реальность такова, что этопрактически не возможно
Хм.
Вообщем тогда придется делать так, как советовали выше.
Придется парсить весь файл, вставлять в нужное место строку и заново писать файл.
RageGod вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись текста в текстовый файл shadowmvn Помощь студентам 1 23.12.2012 13:17
Запись текста файл с кодировкой windows-1251 в Delphi 7 Cav Общие вопросы Delphi 5 02.02.2011 18:21
Обработка текста и запись результата в отдельный файл MrakSPb Общие вопросы C/C++ 2 20.12.2009 01:41
Запись текста в файл KoBRaAndrey Общие вопросы Delphi 1 06.10.2009 23:42
Чтение и Запись текста из\в файл(а), C++ FastDead2 Помощь студентам 20 14.05.2009 00:01