Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
-= 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;
Скачать: [xml.tar.bz2];

Наверх





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


1-95853
Gamar
2002-08-16 16:37
2002.08.29
Проблема с написанием компонента


3-95717
kserg@ukr.net
2002-08-09 12:16
2002.08.29
QReport - 2 вопроса


1-95862
^Sanya
2002-08-16 23:02
2002.08.29
Little Question: Правда, что в ini больше 64Кб не похранишь?


4-96010
Misha-5
2002-06-25 13:47
2002.08.29
Как правильно вызвать функции из SETUPAPI.DLL?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский