Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Найти и заменить [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 плюс =
Смотри Паскаль функции по работе со строками.


Наверх

Титульная страница Поиск, карта сайта Написать письмо