Текущий архив: 2006.07.30;
Скачать: CL | DM;
Вниз
Найти и заменить Найти похожие ветки
← →
Afonya (2006-07-07 12:19) [0]Добрый день, мастера! Подскажите студенту.
Пытаюсь найти строку в текстовом файле и заменить значение.
Есть текстовый файл примерно такого вида:
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;
но он сравнивает только всю строку.
Плиииз напишите функцию если не трудно. Буду очень признателен.
← →
PSPF2003 © (2006-07-07 12:36) [1]Первая строка StrPos
А значение VasyaPupkin это длинна строки минус VasyaPupkin плюс =
Смотри Паскаль функции по работе со строками.
← →
Юрий Зотов © (2006-07-07 12:53) [2]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;
← →
StriderMan © (2006-07-07 12:58) [3]
> Values[Names
если равно между именем и значением окружено пробелами, то не работает эта конструкция, сам наступал на такую граблю.
← →
Ivolg © (2006-07-07 13:57) [4]>Afonya
Тебе наверное надо сохранить данные в программе, а потом снова загрузить их ?
← →
Ketmar © (2006-07-07 14:03) [5]а не надо пробелы ставить.
← →
Afonya (2006-07-07 14:07) [6]Всем спасибо.
Страницы: 1 вся ветка
Текущий архив: 2006.07.30;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.01 c