Предисловие:
Довайте с вами рассмотрим основные функции для работы со строками, вообще в
свободное время мне
нравиться помудиться со строками- пропарсить какойлибо сайт и тд: наша цель,
пропарсить сайт
_http://myip.ru и добыть наш ип в удобной форме x) Хотя легче конечно залезть на
сам сайт и посмотреть
НО представим что ип нам нужно вывести в своей проге или отправить на мыло-
конечно узнать ип можно
поразному, но мы выберем именно этот способ
Наконец-то расшифрована звукозапись первого полета в космос Ю.Гагарина:
Эй... Куда вы меня тащите...Эээ... Вы что?... Что это за хреновина? У вас что у
всех крыши ПОЕХАЛИ...
Вот и мы...
Поехали
Наши строковые функции:
Length(Str: String)
SetLength(Str: String; NewLength: Integer)
Pos(SubStr, Str: String)
PosEx(SubStr, Str: String; Offset: Integer)
Delete(Str: String; Start, Length: Integer)
Copy(Str: String; Start, Length: Integer)
LowerCase(Str: String)
UpperCase(Str: String)
AnsiReplaceStr(Str, FromText, ToText: String)
AnsiReplaceText(Str, FromText, ToText: String)
ReverseString(Str: String)
AnsiReverseString(Str: AnsiString)
DupeString(Str: String; Count: Integer)
Для выполнения поставленной задачи "Добыть IP" нам потребуються не все из
них- но всё же рассмотрим
их все. Так- начнём попорядку:
//////LENGTH//////
Length(Str: String)
Дання функция возврощает колличество символов в строке.
Пример:
len:=length('hallо world')
дання строка возвратит нам число 11, как видим значение которое вернула
функция поместиться в
переменную len, для примера- чтобы посмотреть результат напишем showmessage(len);
len:=length('hellо world');
showmessage(len);
---
Результат "11"
---
//////SetLength//////
SetLength(Str: String; NewLength: Integer)
Данная функция "Обрезает" строку, тут как мы видим два входных параметра- 1
аргумент должен содержать строку над которой работать а второй это насколько
символов сделать ограничение.
Пример:
len:='строка для примера';
len:=setlength(len,6);
showmessage(str);
---
Результат "строка"
---
//////Pos//////
Pos(SubStr, Str: String)
Данная функция ищет вхождение подстроки
Пример:
len:='login@mail.ru';
num:=pos('@', len);
showmessage(inttostr(num));
---
Результат "6"
---
//////PosEx//////
PosEx[/b](SubStr, Str: String; Offset: Integer)
Для того чтобы работать с этой функцией подключети в uses "StrUtils".
Данная фукнция аналогична функции Pos с той лишь разницей что можно указать
отступ, тобиш с какого
символа будет начат поиск подстроки
Пример:
len1:='Что за тупая функция';
len2:='тупая';
num1:=PosEx(len2, len1, 2);
num1:=PosEx(len2, len1, 3);
showmessage(inttostr(P1));
showmessage(inttostr(P2));
---
Результат "3" и "4"
---
//////Delete//////
Delete(Str: String; Start, Length: Integer)
Функция удаляет часть строки...
Пример:
len:='Дарова Ping0, опять нажрался?';
Delete(len, 13, 17);
showmessage(len);
---
Результат "Дарова Ping0"
---
//////Copy////// Copy(Str: String; Start, Length: Integer)
Данная функция копирует часть строки
Пример:
len:='Дарова Ping0, опять нажрался?';
len:=copy(len, 15, 15);
showmessage(len);
---
Результат "опять нажрался?"
---
//////LowerCase//////
LowerCase(Str: String)
Данная функция преобразует строку в нижний регистор
Пример:
len:=lowercase'I HeKeR pOetOmU nEpishU ZaborChiKoM';
showmessage(len);
---
Результат "i heker poetomu nepishu zaborchikom"
---
жаль что данная функци я никак нереагирует на русские буквы =(
//////UpperCase//////
UpperCase(Str: String)
Данная функция аналогично функции LowerCase с той лиш разницей что
преобразует текст в верхний
регистор, думаю приводить пример ненадо )
//////AnsiReplaceStr//////
AnsiReplaceStr(Str, FromText, ToText: String)
Опять же чтобы работала данная функция нцжно подключить в uses "StrUtils".
Пример:
len:='Всем Привет';
len2:=AnsiReplaceStr(Str1, 'Привет', 'пока');
showmessage(str2)
---
Результат "Всем пока"
---
//////AnsiReplaceText//////
AnsiReplaceText(Str, FromText, ToText: String)
Опять же незабываем подключить в uses "StrUtils".
Функция аналогична предыдущий функции "AnsiReplaceStr" с той лишь разницей что
она независима от регистра.
Пример:
len:='Всем Привет';
len2:=AnsiReplaceStr(Str1, 'ПриВеТ', 'пока');
showmessage(str2)
---
Результат "Всем пока"
---
//////ReverseString//////
ReverseString(Str: String)
Незабываем подключить в uses "StrUtils".
Функция моя самая любимая ) Она позволяет перевернуть строку
Пример:
len:='Всем привет';
len:=reversestring(len);
showmessage(len)
---
Результат "акоп месВ"
---
//////AnsiReverseString//////
AnsiReverseString(Str: AnsiString)
Аналогична функции ReverseString
//////DupeString//////
DupeString(Str: String; Count: Integer)
Интересная функция однако, копирует строку столько раз сколько указанно в
аргументе Count
Пример:
len:='Всем привет';
len:=dupestring(len,5);
showmessage(len)
---
Результат "Всем приветВсем приветВсем приветВсем приветВсем привет"
---
С функциями всё- теперь довайте для приличия всёже получим этот ИП "млять,
только теперь я понимаю-
что этот долбанный ип нестоил столько моего времени, которое я потратил на
написание статьи )"
Кидаем на форму IdHTTP, Memo и Button
и в обработчие собития OnClick у кнопки, пишем:
Код:
var len:string; num:integer;
begin memo1.text:=idhttp1.get('http://www.myi p.ru/get_ip.php');
len:=memo1.text;
num:=pos('<TD bgcolor=white align=center v align=middle>',len) +45;
delete(len,1,num);
len:=copy(memo1.text, num, pos('<',len)) ;
memo1.Text:=len;
Жмёте кнопку и получаете ип..
Ну вот впринципе и всё!
Всем спасибо за внимание- надеюсь кому пригодиться
|