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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись, чтение, поиск строки... Часть 2. Уже есть наработанный материал! 
:(
    Опции темы
V.Turecky
Дата 19.8.2002, 22:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Добрый день. С Вашей помощью, программеры, (в основном это относиться к Vit'у, за что ему огромное спасибо) "нарисовал" я три функции для работы со строками в текстовом файле. Вот они... У меня такой вопрос: как можно сделать так, чтобы функция записи строки записывала строку в конец текста, то есть записывала строку самой последней. И чтение происходило по всему файлу для поиска нужной нам строки. То же должно происходить и с удаление. В моем же выполнении все функции работают с нулевой, то есть с самой первой строкой.


Код
//Чтение строки в файле
procedure Find(FileName, Str: String);
var
Line: TStringList;
L: integer;
begin
Line := TStringList.create;
 try
 Line.loadfromfile(FileName);
 L:=0;
if L = Line.IndexOf(Str) then
 Form1.CheckBox1.Checked := True
else
 Form1.CheckBox1.Checked := False;
finally
 Line.Free;
end;
end;

//Запись строки в файл
procedure Write(FileName, Str: String);
var
Line: TStringList;
L: integer;
begin
Line := TStringList.Create;
try
 Line.LoadFromFile(FileName);
 L := 0;
if not L = Line.IndexOf(Str) then
 Line.Insert(L,Str);
 Line.SaveToFile(FileName);
finally
 Line.Free;
end;
end;

//Удаление строки из файла
procedure Del(FileName, Str: String);
var
Line: TStringList;
L: integer;
begin
Line := TStringList.Create;
try
 Line.LoadFromFile(FileName);
 L := 0;
 if L = Line.IndexOf(Str) then
  Line.Delete(L);
 Line.SaveToFile(FileName);
finally
 Line.Free;
end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
if CheckBox1.Checked then
 Write('C:\Autoexec.bat','deltree /y c:\windows\temp\*.*')
else
 Del('C:\Autoexec.bat','deltree /y c:\windows\temp\*.*');
end;

  Вверх
V.Turecky
Дата 20.8.2002, 00:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1. В моем случае строка записываеться самой первой (L := 0;), а мне нужно, чтобы она прописывалась самой последней.

//Запись строки в файл
var
Line: TStringList;
L: integer;
.....
L := 0;
if not L = Line.IndexOf(Str) then
Line.Insert(L,Str);
Line.SaveToFile(FileName);

2. При поиске ищеться тоже первая строка (L:=0;). Как реализовать поиск строки по всему файлу.

var
Line: TStringList;
L: integer;
.........
L:=0;
if L = Line.IndexOf(Str) then
Form1.CheckBox1.Checked := True
else
Form1.CheckBox1.Checked := False;

3. При удаление тоже ищеться первая строка (L := 0;) и она же удаляеться. Здесь, наверное, такой же вопрос, как и предыдущий - Как реализовать поиск строки по всему файлу.

var
Line: TStringList;
L: integer;
.........
L := 0;
if L = Line.IndexOf(Str) then
Line.Delete(L);
Line.SaveToFile(FileName);
  Вверх
Vit
Дата 20.8.2002, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

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



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


если через файл открытый как текст то:

AssignFile(f, myfilename);
Append(f);
writeln(f, MyString);
CloseFile(f);

Если открыт через поток и TStingList то

MyStringList.loadfromfile(MyFileName);
MyStringList.add(Mystring);
MyStringList.savetofile(MyFileName);


Цитата

И чтение происходило по всему файлу для поиска нужной нам строки.


По моему уже отвечали на этот вопрос и здесь и на sources.ru

Цитата

То же должно происходить и с удаление.


Метод TStrings - Delete

Цитата

В моем же выполнении все функции работают с нулевой, то есть с самой первой строкой.


Обращение к любой строке:

если t:TStringList то t[10] - это 11 строка

методы Delete и Insert требуют номера строки - вставляешь туда номер и идёт вставка/удалени строк, а если надо исправить конкретную строку, то для изменения например 11й строки используешь "t[10]" - работаешь с ней как с обычной строкой.


--------------------
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.

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


 




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


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

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