Форум: "Начинающим";
Текущий архив: 2009.07.05;
Скачать: [xml.tar.bz2];
ВнизВытащить из текстового файла нужную строку Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c