Текущий архив: 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.46 MB
Время: 0.006 c