![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Найти и заменить [D7, WinXP]
Afonya © (2006-07-07 12:19:00)Добрый день, мастера! Подскажите студенту.
Пытаюсь найти строку в текстовом файле и заменить значение.
Есть текстовый файл примерно такого вида:
user = 2
VasyaPupkin = 7890
sdata = 78.78
user = 4
VasyaPupkin = 7890
sdata = 45.8904
и т.д., таких секций может быть много, а может быть одна.
Нужно поиском найти первую строку начинающуюся с VasyaPupkin, что после равно запомнить в переменную
Затем у пользователя взять из Edit новое значение для строки VasyaPupkin = и заменить им старое во всем файле...
пытался сделать так:
FileName:=ExtractFilePath(Application.ExeName)+'1.txt';
with TStringList.Create do
begin
try
LoadFromFile(FileName);
Sort;
while Find(Edit1.Text+' value', i) do
Strings[i] := edit2.Text+' value';
for i := 0 to Pred(Count) do
if Strings[i] = edit1.text then
Strings[i] := Edit2.text;
SaveToFile(FileName);
finally
Free;
end;
end;
но он сравнивает только всю строку.
Плиииз напишите функцию если не трудно. Буду очень признателен.
Afonya (2006-07-07 14:07:00) [1]Всем спасибо.
Ketmar (2006-07-07 14:03:00) [2]а не надо пробелы ставить.
Ivolg (2006-07-07 13:57:00) [3]>Afonya
Тебе наверное надо сохранить данные в программе, а потом снова загрузить их ?
StriderMan (2006-07-07 12:58:00) [4]
> Values[Names
если равно между именем и значением окружено пробелами, то не работает эта конструкция, сам наступал на такую граблю.
Юрий Зотов (2006-07-07 12:53:00) [5]var
Value: integer;
with TStringList.Create do
try
LoadFromFile(FileName);
Value := StrToInt(Values[Names[IndexOfName(Edit1.Text)]]);
Text := StringReplace(Text, Edit1.Text, Edit2.Text, [rfReplaceAll]);
SaveToFile(FileName);
finally
Free;
end;
PSPF2003 (2006-07-07 12:36:00) [6]Первая строка StrPos
А значение VasyaPupkin это длинна строки минус VasyaPupkin плюс =
Смотри Паскаль функции по работе со строками.