![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вытащить из текстового файла нужную строку [D7, WinXP]
dup © (2009-05-17 16:45:00)Привет мастера!
Парюсь уже весь день, не могу понять как вытащить из текстового файла строку которая например начинается со слова "delphi", а затем отсчитать после нее 20 символов и сохранить их в string?
гуглил на эту тему нашел только функцию выдергивания определенного выражения из файла.
Жду ответа
Anatoly Podgoretsky (2009-05-19 08:57:00) [1]А зачем TFileStream, чтобы потрахаться?
TStas (2009-05-19 00:01:00) [2]А в чём проблема-то её нежно выпарсить из файла? Ведь, даже если файл гиганский на весть диск, как строчку парсим, так, один в один, парсим и файл. Открываем файл через TFileStream, а дальше точно также. Только когда строчку пасрим, то переводим у парсера "указатель", а там - у потока через Seek.
KilkennyCat (2009-05-18 01:55:00) [3]
> Сергей М. © (17.05.09 17:44) [2]
> Большой файл-то ?
Это что, новый критерий поиска?
Сергей М. (2009-05-17 21:31:00) [4]
> вообще это исходный код странички
Для работы с 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=
dup (2009-05-17 19:55:00) [5]сделал вот так:
v:=copy(s,pos('name='+#39+'wmkey'+#39+' value=',s)+20,32);
как то извращенно... но я рад все работает. спасибо тебе CrytoGen!!!
CrytoGen (2009-05-17 19:39:00) [6]pos('name=''key'' value=',s)
dup (2009-05-17 19:37:00) [7]
v:=copy(s,pos('name='key' value=',s)+6,20);
проблемы с апострофами. как можно выйти из положения и искать эту строку?
name='key' value=
dup (2009-05-17 19:13:00) [8]он выходит на первый value, как выйти на второй?
dup (2009-05-17 19:11:00) [9]странно.... строка v содержит после выполнения вот это:
''> <input type='sub
а почему?
CrytoGen (2009-05-17 18:54:00) [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;
Alien1769 (2009-05-17 18:47:00) [11]
> а как реализовать поиск этой строки с помощью ReadLn?
Перебором !
dup (2009-05-17 18:29:00) [12]а как реализовать поиск этой строки с помощью ReadLn?
CrytoGen (2009-05-17 18:27:00) [13]ReadLn не устраивает?
CrytoGen (2009-05-17 18:27:00) [14]ReadLn не устраивает?
dup (2009-05-17 18:27:00) [15]вообще это исходный код странички.
первый 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" }
Сергей М. (2009-05-17 17:49:00) [16]
> строк начинающихся с "value=" пять
И только одна из них имеет длину 32 символа ?
dup (2009-05-17 17:47:00) [17]файл 12 кбайт
строк начинающихся с "value=" пять
Сергей М. (2009-05-17 17:44:00) [18]Большой файл-то ?
И сколько там строк, начинающихся с value= ?
dup (2009-05-17 16:56:00) [19]уточню вопрос: нужно найти строку, состоящую из 32 символов в файле и поместить ее в string. В самом файле она начинается с:
value=