Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1242655529
@!!ex
2009-05-18 18:05
2009.07.05
Помогите перевести на С++.


3-1223120706
keymaster
2008-10-04 15:45
2009.07.05
Занятная проблема с Oracle XE


15-1241243335
MaltiGre
2009-05-02 09:48
2009.07.05
Извлечение отдельных файлов из архива


15-1240993263
Diha
2009-04-29 12:21
2009.07.05
Компонент шрифтов


15-1241013895
andre17
2009-04-29 18:04
2009.07.05
Ошибка при работе с BOLD for Delphi





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