![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа с pointer
Уа3 © (2010-10-09 20:40:00)Есть такой код:
buf:pointer;
....
WriteFile(FSocket,Buf^,Size,BytesWrite,ov);
в buf заполнен символами, как лучше организовать замену некоторых строк из buf на другие.
sniknik (2010-10-10 10:47:00) [41]там же, но нужно отслеживать не запросы, а ответы. причем только с успешными статусами (200/...)
http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP
их вообще то нужно обрабатывать, не просто так.
плюс, страничка может быть (в последнее время почти всегда) динамической, ибо Ajax, JQuery (ссылку уже давал), и др. т.е. сама она появляется ТОЛЬКО в браузере, путем сборки разных данных, которые еще и архивированы...
а вот хороший пример (там внутри еще ссылки)
http://delphimaster.ru/cgi-bin/forum.pl?id=1284889393&n=4
страницы которая вовсе и не страница... а набор xml с правилами (xsl) преобразования (данных там как и контента после разовой скачки попросту нет, есть только ответы с кодом 304).
и тд. просто не понимаешь насколько широка область за которую взялся... и которую решил осилить "нахрапом" заимствованным кодом, по советам из инета.
Уа3 (2010-10-10 09:31:00) [42]Не задевайте тот вопрос. Это два разных вопроса.
sniknik, укажи из листинга где нужно заменять контент?.
sniknik (2010-10-09 23:08:00) [43]http://delphimaster.ru/cgi-bin/forum.pl?id=1286616123&n=4
понятно. сам себя обманул начав писать под разными никами...
ты хоть видел ЧТО ты меняешь? как думаешь повлияет изменение заголовков и запросов на контент страниц? т.е. по простому, если красить дверь соседу у твоей хаты крыша перекрасится? типа а что, дома то рядом...
ну да ладно, просто теперь ясно, что вопрос у тебя вообще не по задаче, изменяемый код откуда то "спер", сам не понимаешь, что делаешь, продолжать что-то обсуждать бесполезно, и единственный выход тебе что-то сделать это нанять программиста...
Anatoly Podgoretsky (2010-10-09 22:30:00) [44]И зачем мне куда то идти и смотреть листинг, если ты не в состоянии привести здесь только нужную часть.
sniknik (2010-10-09 22:29:00) [45]> какие есть пути?
какие еще тебе пути? написать как еще можно исковеркать? ты их солить собираешься? напиши один, но правильно, раз уж поменял строку, то и размер замени, ведь он реально поменялся. и работай со строками, проблем будет меньше.
Anatoly Podgoretsky (2010-10-09 22:27:00) [46]> Уа3 (09.10.2010 22:25:11) [11]
string полностью может заменить как pointer, так и pchar при том в удобной и
управляемой форме.
Уа3 (2010-10-09 22:25:00) [47]Anatoly Podgoretsky, можешь посмотреть листинг. Buf: string; никуда не годится.
Anatoly Podgoretsky (2010-10-09 22:20:00) [48]
Buf: string;
Уа3 (2010-10-09 22:05:00) [49]sniknik, выложил листинг, полный код, какие есть пути?
http://pastebin.com/8w0rRUYb
строчка в листинге 281. задача замены загружаемого контента.
sniknik (2010-10-09 21:57:00) [50]> содержимое Buf искажается.
а что ему остается? если твой код именно это и делает, искажает оригинальную строку и меняет указатель на ее искаженную копию. причем размер строки при явном неравенстве заменяемых частей ты почему то оставляешь старый...
> из-за pointer( pchar() )
почему это из-за него? можно и чтонибудь другое придумать для того же результата... это из-за того, что ты написал "искажатель", а средства тут не причем.
Уа3 (2010-10-09 21:21:00) [51]http://pastebin.com/8w0rRUYb
строчка в листинге 281. задача замены загружаемого контента.
Уа3 (2010-10-09 21:07:00) [52]buf:=pointer(StringReplace(pchar(Buf), 'ОЛООЛО', 'ТРОЛОЛО',[rfReplaceAll, rfIgnoreCase]));
WriteFile(FSocket,Buf^,Size,BytesWrite,ov);
в результате.
в Buf нет ОЛООЛО, из-за pointer( pchar() ) содержимое Buf искажается.
Anatoly Podgoretsky (2010-10-09 20:58:00) [53]> Уа3 (09.10.2010 20:56:04) [4]
StringReplace
Уа3 (2010-10-09 20:56:00) [54]Anatoly Podgoretsky, грубо говоря строк. Ведь как-то можно сделать обработку buf и заменить в нем ОЛОЛО на ТРОЛОЛО, не трогая остальные символы.
Anatoly Podgoretsky (2010-10-09 20:56:00) [55]Ну и объяви buf: pchar;
Только это все равно не массив строк.
Уа3 (2010-10-09 20:49:00) [56]как быть. дописываю writeln(pchar(buf)); выводит тексты.
Anatoly Podgoretsky (2010-10-09 20:45:00) [57]> Уа3 (09.10.2010 20:40:00) [0]
В buf нет строк, это вообще не типизированый указатель.