Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

Найти текст и заменить его   Найти похожие ветки 

 
Gex88   (2006-11-15 12:39) [0]

Добрый день ! Подскажите пожалуйста как открыть текстовый файл и программно найти текст и заменить его на другой текст. Подкиньте плииз функцию.


 
Percent   (2006-11-15 12:43) [1]

TextFileOpenReplaceSave();


 
Gex88   (2006-11-15 12:45) [2]

> TextFileOpenReplaceSave();

  А как это работает ?


 
KilkennyCat ©   (2006-11-15 12:45) [3]

AssignFile(F, "")
Reset
Read
Close
и
function AnsiReplaceText(const AText: string; const AFromText: string; const AToText: string): string;


 
Jeer ©   (2006-11-15 12:49) [4]

Вот так и работает:

procedure TextFileOpenReplaceSave()
begin
 AssignFile(F, "")
 Reset..
 Read..
 Close..
// и
 AnsiReplaceText(const AText: string; const AFromText: string; const AToText: string): string;

end;


 
Anatoly Podgoretsky ©   (2006-11-15 13:03) [5]

> Gex88  (15.11.2006 12:39:00)  [0]

Может не стоит искать, а сразу заменять?


 
Gex88   (2006-11-15 13:05) [6]

Насколько я понимаю "AnsiReplaceText" возвращающая строку которая является результатом замены строки AFromText найденная в AText, строкой AToText... А как ее теперь искать в определеннов файле?
понимаю вопрос тупой по этому в конференции начинающим))...


 
Gex88   (2006-11-15 13:06) [7]

> Может не стоит искать, а сразу заменять?
 
Подскажите как это сделать ....


 
Anatoly Podgoretsky ©   (2006-11-15 13:07) [8]

Тупой?
Вопроса вообще нет, где то что ты уже сделал?
Или тебе уже готовый код, открытия, замены и сохранения?


 
Anatoly Podgoretsky ©   (2006-11-15 13:07) [9]

StringReplace


 
KilkennyCat ©   (2006-11-15 13:10) [10]

> [6] Gex88   (15.11.06 13:05)

если AText есть весь техт файла, то зачем еще что-то искать? Эта функция и находит, и заменяет, и возвращает готовый текст.
Единственный нюанс - заменены будут все нахождения.


 
Anatoly Podgoretsky ©   (2006-11-15 13:13) [11]

> KilkennyCat  (15.11.2006 13:10:10)  [10]

А вот за StringReplace подобного самовольства не замечено


 
Gex88   (2006-11-15 13:14) [12]

Теперь вроде бы начинаю врубаться..

> Или тебе уже готовый код, открытия, замены и сохранения?

  Не помешал бы, если это возможно.


 
Anatoly Podgoretsky ©   (2006-11-15 13:17) [13]

> Gex88  (15.11.2006 13:14:12)  [12]

Подожди, сейчас очередь выстроится, это оэначает, что это возможно.


 
KilkennyCat ©   (2006-11-15 13:18) [14]

> [12] Gex88   (15.11.06 13:14)

готовый код невозможно, хотя бы потому, что: мы не знаем всей задачи (например, совершенно не сказано, что потом делать с текстом, требуется ли заменять все вхождения...); это платно; и самое главное: не так научит, как самостоятельная работа.


 
Anatoly Podgoretsky ©   (2006-11-15 13:22) [15]

> KilkennyCat  (15.11.2006 13:18:14)  [14]

А для самостоятельно работы приведен и алгоритм и все необходимые функции, осталось только последнее прочитать наконец справку.


 
from kz   (2006-11-15 13:23) [16]

Если правильно понял:

 SL:=TStringList.Create;
 SL.LoadFromFile("text.txt");

 For i:=0 to Sl.Count-1 do
   begin
     SL.Strings[i]:=(AnsiReplaceText(SL.Strings[i],"Казнить нельзя, помиловать","Казнить, нельзя помиловать"));


 
KilkennyCat ©   (2006-11-15 13:27) [17]

> [16] from kz   (15.11.06 13:23)

нет. неэкономично.


 
Gex88   (2006-11-15 13:27) [18]

from kz  
Этот метод будет работать с очень большими файлами ?


 
from kz   (2006-11-15 13:28) [19]

2 KilkennyCat
 В смысле ?

2 Gex
  Нет.


 
KilkennyCat ©   (2006-11-15 13:29) [20]

Ну вот, выясняется, что и файлы очень большие... для очень больших файлов стандартные функции работы со строками могут оказаться несколько тормознутыми...


 
from kz   (2006-11-15 13:31) [21]

А "TStringList" какой объем файла максимум сможет использовать ?
Что-то забыл...


 
KilkennyCat ©   (2006-11-15 13:34) [22]

> [19] from kz   (15.11.06 13:28)
> 2 KilkennyCat
> В смысле ?

зачем использовать глобальную функцию построчно?
зачем вообще работать построчно, если в задании ничего о строках не говорилось?


 
Anatoly Podgoretsky ©   (2006-11-15 13:39) [23]

> from kz  (15.11.2006 13:23:16)  [16]

А что будешь делать если это окажется так

Казнить нельзя,
помиловать


 
from kz   (2006-11-15 13:39) [24]

Ну он же написал как заменить какой либо текст в файле, выходит, что определенный текст разбросан по файлу и его нужно заменить. Если не перебирать каждую строку в файле то как загрузить весь файл в функцию?


 
Anatoly Podgoretsky ©   (2006-11-15 13:39) [25]

> from kz  (15.11.2006 13:31:21)  [21]

Большого, а что?


 
Anatoly Podgoretsky ©   (2006-11-15 13:40) [26]

> from kz  (15.11.2006 13:31:21)  [21]

Ах да, если это StringList то зачем работать со строками?


 
from kz   (2006-11-15 13:40) [27]

2 Anatoly Podgoretsky
Сравнивать видимо...


 
from kz   (2006-11-15 13:46) [28]

> с большими файлами

Что-то типа  "TResourceStream" использовать надо....


 
KilkennyCat ©   (2006-11-15 13:48) [29]

> [24] from kz   (15.11.06 13:39)
Если не перебирать каждую строку в файле
> то как загрузить весь файл в функцию?


В Вашем варианте TStringList.Text например.


 
Anatoly Podgoretsky ©   (2006-11-15 14:10) [30]

> from kz  (15.11.2006 13:39:24)  [24]

А это что? SL:=TStringList.

F1 + TStringList


 
from kz   (2006-11-15 14:54) [31]

2 Anatoly Podgoretsky
 
SL:=TStringList.Create;

Ты прекрасно знал, что я имел введу, повыпендриваться решил видимо.

2 KilkennyCat
> TStringList.Text
  Действительно, а я даже не подумал.


 
Anatoly Podgoretsky ©   (2006-11-15 16:57) [32]

> from kz  (15.11.2006 14:54:31)  [31]

Ты так думаешь, а если еще подумать?



Страницы: 1 вся ветка

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.059 c
2-1163798289
АртемКИН
2006-11-18 00:18
2006.12.03
Создание программы - с базой


2-1163504867
MishaLukash
2006-11-14 14:47
2006.12.03
TCustomDBGrid? видел только в хелпе


15-1163485098
Denniz
2006-11-14 09:18
2006.12.03
Синяя панель Windows Explorer


15-1163580118
KilkennyCat
2006-11-15 11:41
2006.12.03
Что Вы наиболее часто используете и для каких целей?


15-1163507336
alles
2006-11-14 15:28
2006.12.03
ActiveX в browser