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

Вниз

Вытащить из текстового файла нужную строку   Найти похожие ветки 

 
dup   (2009-05-17 16:45) [0]

Привет мастера!
Парюсь уже весь день, не могу понять как вытащить из текстового файла строку которая например начинается со слова "delphi", а затем отсчитать после нее 20 символов и сохранить их в string?

гуглил на эту тему нашел только функцию выдергивания определенного выражения из файла.

Жду ответа


 
dup   (2009-05-17 16:56) [1]

уточню вопрос: нужно найти строку, состоящую из 32 символов в файле и поместить ее в string. В самом файле она начинается с:
value=


 
Сергей М. ©   (2009-05-17 17:44) [2]

Большой файл-то ?

И сколько там строк, начинающихся с value= ?


 
dup   (2009-05-17 17:47) [3]

файл 12 кбайт
строк начинающихся с  "value="  пять


 
Сергей М. ©   (2009-05-17 17:49) [4]


> строк начинающихся с  "value="  пять


И только одна из них имеет длину 32 символа ?


 
dup   (2009-05-17 18:27) [5]

вообще это исходный код странички.

первый value:

<input type="submit" value="Найти!">

второй:

<input type=hidden name="key" value="961a8dede6cd9d51cc2612add346d4c2">

третий:

<input type=hidden name="wmr" value="get">

четвертый:

<input type="text" name="bse" value="0">

и пятый:

<input type=text size="25" name="q" value="">

нужно вытащить тот, который идет после key. я поискал в гугле. наткнулся на функции Pos и Copy. только не знаю как реализовать...

=====
Функция Pos(SubStr, Str: String) - возвращает позицию подстроки в строке. Нумерация символов начинается с единицы (1). В случае отсутствия подстроки в строке возращается 0. Пример:

Код:

var Str1, Str2: String; P: Integer;
{ ... }
Str1:="Hi! How do you do?";
Str2:="do";
P:=Pos(Str2, Str1);  { P = 9 }

====================================
Функция Copy(Str: String; Start, Length: Integer) - возвращает часть строки Str, начиная с символа Start длиной Length. Ограничений на Length нет - если оно превышает количество символов от Start до конца строки, то строка будет скопирована до конца. Пример:

Код:

var Str1, Str2: String;
{ ... }
Str1:="This is a test for Copy() function.";
Str2:=Copy(Str1, 11, 4); { Str2 = "test" }


 
CrytoGen   (2009-05-17 18:27) [6]

ReadLn не устраивает?


 
CrytoGen   (2009-05-17 18:27) [7]

ReadLn не устраивает?


 
dup   (2009-05-17 18:29) [8]

а как реализовать поиск этой строки с помощью ReadLn?


 
Alien1769 ©   (2009-05-17 18:47) [9]


> а как реализовать поиск этой строки с помощью ReadLn?

Перебором !


 
CrytoGen   (2009-05-17 18:54) [10]

var
 f   : textfile;
 s,v : string;
begin
assignfile(f,"text.txt");
reset(f);
while not eof(f) do
begin
  readln(f,s);
  if pos("value=",s)>0 then
  begin
    v:=copy(s,pos("value=",s)+6,20);
    break;
  end;
end;
closefile(f);
end;


 
dup   (2009-05-17 19:11) [11]

странно.... строка v содержит после выполнения вот это:
""> <input type="sub
а почему?


 
dup   (2009-05-17 19:13) [12]

он выходит на первый value, как выйти на второй?


 
dup   (2009-05-17 19:37) [13]

v:=copy(s,pos("name="key" value=",s)+6,20);

проблемы с апострофами. как можно выйти из положения и искать эту строку?
name="key" value=


 
CrytoGen   (2009-05-17 19:39) [14]

pos("name=""key"" value=",s)


 
dup   (2009-05-17 19:55) [15]

сделал вот так:
v:=copy(s,pos("name="+#39+"wmkey"+#39+" value=",s)+20,32);

как то извращенно... но я рад все работает. спасибо тебе CrytoGen!!!


 
Сергей М. ©   (2009-05-17 21:31) [16]


> вообще это исходный код странички


Для работы с HTML-документами есть куча готовых инструментов, и изобретать велосипед нет никакого резона


<input type="submit" value="Найти!">
<input type=hidden name="key" value="961a8dede6cd9d51cc2612add346d4c2">
<input type=hidden name="wmr" value="get">
<input type="text" name="bse" value="0">
<input type=text size="25" name="q" value="">


Во всех этих фрагментах строка начинается не с value=, а с <input type=


 
KilkennyCat ©   (2009-05-18 01:55) [17]


> Сергей М. ©   (17.05.09 17:44) [2]
> Большой файл-то ?

Это что, новый критерий поиска?


 
TStas ©   (2009-05-19 00:01) [18]

А в чём проблема-то её нежно выпарсить из файла? Ведь, даже если файл гиганский на весть диск, как строчку парсим, так, один в один, парсим и файл. Открываем файл через TFileStream, а дальше точно также. Только когда строчку пасрим, то переводим у парсера "указатель", а там - у потока через Seek.


 
Anatoly Podgoretsky ©   (2009-05-19 08:57) [19]

А зачем TFileStream, чтобы потрахаться?



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

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

Наверх




Память: 0.51 MB
Время: 0.012 c
15-1241011871
Savek
2009-04-29 17:31
2009.07.05
Безопасность компьютера может быть под угрозой


2-1242659601
Евгений Р.
2009-05-18 19:13
2009.07.05
Ошибка подключения к БД


15-1241387790
Unknown user
2009-05-04 01:56
2009.07.05
Delphi и debug information


15-1241591266
Медвежонок Пятачок
2009-05-06 10:27
2009.07.05
файерфокс тупит или я


2-1242548602
Чипырик
2009-05-17 12:23
2009.07.05
Вопрос по WordApplication