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

Вниз

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

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

Наверх





Память: 0.51 MB
Время: 0.032 c
2-1163174786
yuraspb
2006-11-10 19:06
2006.12.03
Как записать в файл массив размером 8 точек на миллион


8-1145596218
Niko
2006-04-21 09:10
2006.12.03
Фоновая загрузка изображений


15-1163706694
vasIzmax
2006-11-16 22:51
2006.12.03
Работа с заголовком


2-1163624566
frameZ
2006-11-16 00:02
2006.12.03
IB + BDE


6-1152840201
verybadbug
2006-07-14 05:23
2006.12.03
cookie





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский