Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

Запись, чтение, поиск строки.   Найти похожие ветки 

 
-= Like =-   (2002-08-19 17:26) [0]

Добрый вечер. "Нарисовал" я три функции для работы со строками в текстовом файле. Вот они... У меня такой вопрос: как можно сделать так, чтобы функция записи строки записывала строку в конец текста, то есть записывала строку самой последней. И чтение происходило по всему файлу для поиска нужной нам строки. То же должно происходить и с удаление. В моем же выполнении все функции работают с нулевой, то есть с самой первой строкой.

//Чтение строки в файле
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;


 
MBo ©   (2002-08-19 17:31) [1]

if Line.IndexOf(Str) >=0 то строка есть (нумерация в списке идет с 0)
добавить - TStringList.Add


 
-= Like =-   (2002-08-19 17:34) [2]

Не могу это использовать. Если нет строки - ошибка. Даже, когда я разрушаю всё с помощью Exit. D3 ведет себя в этом случае очень капризно.

if Line.IndexOf(Str) >=0 then


 
MBo ©   (2002-08-19 17:43) [3]

нельзя ли поставить техническое задание поточнее - что, при каких условиях, нужно сделать?


 
Riko   (2002-08-19 17:54) [4]

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);


 
Riko   (2002-08-19 17:56) [5]

Я и Riko и Like. Решил поменять позывной, дабы особо не светиться. Промашечка вышла, бывает...


 
Anatoly Podgoretsky ©   (2002-08-19 18:04) [6]

Да мы так тебя не путали


 
MBo ©   (2002-08-19 18:04) [7]

на все это я уже ответил.
Какой смысл в этом?
L := 0;
if L = Line.IndexOf(Str) then

надо что-то типа

L:= Line.IndexOf(Str);
if L>=0 then
Line.Delete(i);

добавить в конец - Add, а не Insert

замечание- нехорошо использовать идентификаторы Str, Write и т.п.




Страницы: 1 вся ветка

Текущий архив: 2002.08.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
1-95903
VSergeySPB
2002-08-17 22:48
2002.08.29
Ошибка в Хелпе.


3-95685
sasha123
2002-08-08 13:58
2002.08.29
Подскажите, какую ОС поставить при установки MS SQL SERVER 2000.


1-95902
stany
2002-08-17 19:23
2002.08.29
Помогите,плиз... мучаюсь с ListView


1-95738
Aszbed
2002-08-19 06:14
2002.08.29
Расположение форм


1-95850
Viacheslav
2002-08-17 22:17
2002.08.29
.rc-файлы (файлы ресурсов)