Webbrowser: przechwycenie okna logowania, wyłączenie dźwięku filmu na youtube.

0

Witam,

Wstawiłem na form1 komponent webbrowser1, na samej górze wstawiłem Edit1 z nawigacją, obok wstawiłem przycisk button1, edit2, edit3. Program ma mi działać na takiej zasadzie:
Gdy wpiszę w edit1 adres strony gmail com, w webbrowser otworzy mi się strona logowanie gmail, na której jak widać jest miejsce do wpisania loginu, hasła oraz przycisk zaloguj się. Jak zrobić, żeby tekst z edit2 wkleił mi się w miejsce loginu, tekst z edit3 wkleił się w miejsce hasła, a po naciśnięciu przycisku button1, zalogowało na pocztę.

W edit1 wpisuje adres jakiegoś filmiku z youtube, jaki kod, żeby filmik odtwarzał się bez dźwięku? (tu znalazłem jakąś odpowiedz w języku angielskim, ale nie mogę połapać się dokładnie, co i jak).

1

A czy koniecznie trzeba modzić z TWebBrowserem? Ja jeżeli strona jest po HTTPS to zapisuje ją sobie na dysk jako plik *.htm z pod przeglądarki, później zamieniam w treści pliku https:// ma http:// i pod WireSharkiem upewniam się jakie dane są wysyłane POSTem kiedy otworzę taką stronę pod przeglądarką i spróbuje wykonać logowanie. Podejrzewam, że wystarczy pominąć lub zmienić tę wartość continue pokazaną poniżej. Wartości dsh oraz GALX należy sobie wyciągnąc (można wyrażeniami regularnymi - polecam moduł z: http://regexpstudio.com/TRegExpr/TRegExpr.html lub przez użycie funkcji Pos, Copy i Delete) z treści strony głownej logowania. A najlepiej do obsługi HTTPS skorzystać z Synapse. Mój artykuł na temat obsługi tego protokołu jest na: Obsługa protokołu HTTP przy użyciu pakietu Synapse bo według mnie, korzystanie z TWebBrowser w przypadku stron, które nie wymagają JavaScriptu to jak polowanie na muchy z armatą. Poza tym jeżeli chcesz sprawdzać lub wysyłać emaile, również z gmaila to lepiej imo także skorzystać z Synapse, które również posiada odpowiednie moduły do tego celu. Poszukaj sobie na tym forum moich postów gdzie byłęm posądzony o wysłanie malware i podsyłałem jednemu "pytaczowi", co mnie bezpodstawnie oskarżył i przez to zniechęcił do podsyłania gotowców, właśnie gotowca w pliku wysylanie_emaili.rar. A przykład tego co wysyłane jest POSTem do strony https://accounts.google.com/ServiceLoginAuth i również należało by to wysłać i obsłużyć jeżeli upierasz się na logowanie za pomocą HTTP(S). Chociaż ja do sprawdzania i wysyłania e-maili skorzystał bym z protokołów, które służą do tego celu, skoro i tak to ma robić Twój program.
continue=http%3A%2F%2Fmail.google.com%2Fmail%2F&service=mail&rm=false&dsh=SPARSUJ_Z_TREŚCI_STRONY_GŁÓWNEJ&ltmpl=default&scc=1&ss=1&GALX=SPARSUJ_Z_TREŚCI_STRONY_GŁÓWNEJ&pstMsg=0&dnConn=&checkConnection=&checkedDomains=youtube&timeStmp=&secTok=&Email=TUTAJ_LOGIN&Passwd=TUTAJ_HASŁO&signIn=Zaloguj+si%C4%99&rmShown=1
EDIT: szukarka jakoś jednak działa ok. Pamiętałem jaki mam nick ;) Oraz pamiętałem, że gówienko którego chciał użyć oskarżający o malware ludek miało w nazwie clever i znalazłem ten wątek: http://4programmers.net/Forum/Delphi_Pascal/201557-clever_internet_suite_wysylanie_e-mail_delphi_6?start=0 także kto chce korzystać z gotowców, które kiedyś wrzucałem musi je sobie sam znaleźć, bo ponownie nie wrzucam. A jeszcze co do YouTube to dodam, że video możesz stamtąd pobrać. Są do tego strony http://olesio.eu/downloadersży mieć do nich małe zaufanie, bo mogą chcieć potwierdzenia użycia Javy i innych cudów, co może narazić nas na podesłanie malware, ale nie oskarżam bezpodstawnie, mam tylko taką obawę. Za to mojego downloadera do filmików z YouTube znajdziesz na http://olesio.eu/downloaders - jest pisany w WinAPI, przetestowany i sprawny. A złośliwego kodu na pewno nie zawiera, ale jeżeli nie wierzysz mi na słowo to trudno. Zawsze możesz popatrzyć na moją reputację, ilośc postów - czym się tutaj nie chwalę, ale powinno to być jakimś wyznacznikiem mam nadzieję pozytywnym. A i zawsze można sprawdzić tak malutki exek na virustotal lub innych tego typu www.

0

Olesio, w co drugim poscie wspominasz ze ktos cie o malware posadza. Daj chlopie na luz.
Jakis noob raz ci tak napisal, chlopak poczatkujacy itd a ty zaraz obrazony wielce.
Rob swoje dalej, ale w dobrym kierunku a o glupotach zapomnij.

co do tematu to kolega sie pytal min jak sciszyc glos w youtube?
to kontrolka flashowa wiec nie sciszysz, chyba ze zasymulujesz klikniecie myszka - bezsensowne jednak.

0

co do tematu to kolega sie pytal min jak sciszyc glos w youtube?
to kontrolka flashowa wiec nie sciszysz, chyba ze zasymulujesz klikniecie myszka - bezsensowne jednak.

YT zapisuje ustawienia głośności. Wystarczy to zmienić a pewnie są jeszcze jakieś przewidziane sposoby.

Olesio, w co drugim poscie wspominasz ze ktos cie o malware posadza. Daj chlopie na luz.
Jakis noob raz ci tak napisal, chlopak poczatkujacy itd a ty zaraz obrazony wielce.
Rob swoje dalej, ale w dobrym kierunku a o glupotach zapomnij.

IMO lepsze te obrażenie niż skompilowane gotowce, lepiej by było gdyby w ogóle gotowców nie dawał początkującym użyszkodnikom bo tylko im mąci w głowie.

także kto chce korzystać z gotowców, które kiedyś wrzucałem musi je sobie sam znaleźć, bo ponownie nie wrzucam.

A nie lepiej żebyś je do jakiegoś artu wrzucił zamiast dawać za każdym razem? Dzięki temu większej ilości mądrych odwrotnie można by dawać link do wyszukiwarki.

0

ok faktycznie moze sie da:
tutaj jakis sposob proponuja: http://stackoverflow.com/questions/6781980/mute-youtube-sound-in-delphi-twebbrowser

0
dddsds napisał(a):

Olesio, w co drugim poscie wspominasz ze ktos cie o malware posadza. Daj chlopie na luz.
Jakis noob raz ci tak napisal, chlopak poczatkujacy itd a ty zaraz obrazony wielce.
Rob swoje dalej, ale w dobrym kierunku a o glupotach zapomnij.

co do tematu to kolega sie pytal min jak sciszyc glos w youtube?
to kontrolka flashowa wiec nie sciszysz, chyba ze zasymulujesz klikniecie myszka - bezsensowne jednak.

Ok, już o tym nie będę wspominał. W razie czego ktoś sobie może znajdzie ten wątek i inne przez google lub forumową wyszukiwarkę. Tylko niech się nie dziwi, że się wypaliłem trochę i nie mam zamiaru "szastac" gotowcami na lewo i prawo, jak to kiedyś miałem w zwyczaju.

<quote="872452">

co do tematu to kolega sie pytal min jak sciszyc glos w youtube?
A nie lepiej żebyś je do jakiegoś artu wrzucił zamiast dawać za każdym razem? Dzięki temu większej ilości mądrych odwrotnie można by dawać link do wyszukiwarki.

Jak się przemogę to pomyślę nad wpisem na moim blogu i wrzucę jakieś "popularne" gotowce, które kiedyś tutaj się komuś przydały. Bo prawda jest taka, że jak ktoś bardzo chce to znajdzie to co chce, jeżeli było publikowane w sieci i nie zostało z niej zdjęte. Poza tym faktycznie, gotowce mogą rozleniwiać większośc początkujących, bo i tak się nic nie nauczą, ponieważ nie chcą się uczyć. A i na blogu w WordPresie też mogę orientacyjnie kontrolowac ilośc pobrań danego pliku z gotowcem.

0

mam kilka pomysłów na ciekawe programy, podałem przykład gmail, ale chce za pomocą delphi logować się do innych stron, jak nk, fejsbuk, yt itd. i najlepiej by było gdybym mógł obsługiwać webbrowsera za pomocą buttona i edita, a jeżeli jest lepszy komponent niż webbrowser to chętnie użyje czegoś wygodniejszego. @olesio twój sposób jest dobry, ale gdy będę chciał stworzyć bota do wysyłania wiadomości na nk, to program będzie musiał ciągle pobierać każdą stronę co spowolni mój program. Chętnie bym oblukał jakiś program w delphi, dzięki któremu można zalogować się na jakąkolwiek stronę.

Link wyżej dotyczy delphi 2010 u mnie w delphi 6 nie działa ten sposób szkoda.

0

Co do FB to również polecam Synapse, tylko trzeba mieć na względzie, że aplikacja która musi mieć dostęp do pewnych danych poza Twoją listą znajomych czy ich galeriami musi uzyskać zgodę osoby, która chce ją używac. Na http://olesio.eu/downloaders znajdziesz mój Downloader do galerii zdjęć swoich znajomych z FaceBooka. Właśnie dzisiaj go poprawiłem. Do pobrania danych korzysta on z tymczasowego tokena, który pobiera ze strony z dokumentacją do API FaceBooka. Dzięki temu nie trzeba go dodawać jako zaufanej aplikacji, a ja nie musze generować jakiś własnych tokenów i dopisywać swoją aplikację na FaceBooku. Downloader do YT w WinAPI również jest na powyższej stronie. Pisany był jakiś czas temu i się jak dla mnie sprawdza, używam go zamiast powolnych stron z koniecznością akceptacji użycia Javy, co może czasem przynieść ryzyko pobrania szkodliwego kodu przez stronę i wykonania go. Przy okazji mógłbyś w przyszłości nauczyć się podstaw WinAPI jeżeli chciałbyś kupić źródło i tego downloadera. Jednak z cudowaniem z kotrnolką Flasha nie pomogę, bo nie potrzebowałem tego, więc nie mam w tym żadnego praktycznie doświadczenia. Co do NK to jeżeli jesteś zainteresowany napisz do mnie prywatną wiadomość, mogę Tobie za rozsądną cenę zaoferować exek plus źródła (na pewno nie malware) programu do masowego wysyłania wiadomości na NK. Z tego co przed chwilą sprawdziłem, loguje się ok i działa nadal. Był on pisany dla osoby, chcącej wysłać w szybki sposób wiele wiadomości z zaproszeniem na zlot klasowych znajomych, który nie korzystają z FaceBooka. Z tego co wiem od osób, które go ode mnie kupiły sprawdził się. Niestety jeżeli zaczniesz słać spam masowo do znajomych to NK może zablokować możliwość wysyłania wielu wiadomości. Program pisany pod Delphi 7 z użyciem Synapse. Wcale nie odwiedza on żadnych stron jeżeli nie jest to konieczne. Wysyła po prostu dane POSTem >prawie< tak jakby tobiła to "uboga" przeglądarka WWW. Pozwala zarządzać szablonami wiadomości, a także ustawić czas do odczekania między wysyłaniami (minimum 3 sekundy) wysyłanie wcale nie jest wolne, ale pewne odczekanie jest konieczne, bo jak inaczej sobie wyobrażasz że osoba śle kolejne wiadomości co chwilę do różnych osób. Nawet osobie przełączającej się na kolejne zakładki przeglądarki www i wciskanie przycisku "Wyślij" przy już napisanych wiadomościach zajmowało by dłuższą chwilę niż kilkanaście milisekund odstępu. Jednak jeżeli użyjesz mój program to na własną odpowiedzialnośc. Widze, że nie masz wiedzy o podstawach, a coś chcesz kombinowac, a ja nie biorę odpowiedzialności za to jak zareaguje na Twoje spamowanie zespół NK.

0

Olesio, teraz pocisnales, wez tutaj nie karm trolli sklonnych spamowac na nk czy facebooku :),

jeszcze to sprzedawac....

a co do nk, to 2 lata temu napisalem tez cos takiego, ale tylko dla testow, po jakims czasie nk zaczelo blokwoac ilosc wiaodmoscci wysylanych szybko po sobie.
Prawidlowo.

Mialem cos napisac do temetu, przyklad sciszania, ale jednka sie wtrzymam i domoroslych spamerow karmic nie bede.

0

@gytuk Ok, ja nie namawiam do kupna. Też podejrzewam niecne cele osób tymbardziej piszących w taki sposób: (...) gdy będę chciał stworzyć bota do wysyłania wiadomości na nk (...). To słowo "bot" nasuwa mi niemal skojarzenie z pseudo h4xiorami od tibii, którzy by chcieii zdobyć konta swoich "kolegów", również w to grających, a nie mają podstawoego pojęcia o programowaniu w czymkolwiek. Anyway, mój program był pisany dość dawno i na prośbę jednej osoby, później przydał się kolejnej. Natomiast od pierwszej osoby wiem, że zablokowali jej możłiwośc wysyłania wielu wiadomośći. Też uważam to za słuszne. Jeżeli ktoś takiego masowego wysyłania nadużyje. A najczęśćiej służy to do spamu. Osobiście do niczego nie namawiam. Kodu ogólnie na pewno nie udostępnie. Anyway (ponownie), a wydaje się mi, że @nowyuser na razie chciałby pisać "wszystko" do "wszystkiego" w Delphi, a nic w tym kierunku chyba nie zrobił. Upiera się tylko przy zastosowaniu TWebBrowsera, bo pewnie słyszał gdzieś czy czytał przypadkiem w saieci o takim komponencie i chce - jak pisałem - używac armaty do polowania na muchy, zamiast skorzystać z innych, według mnie lepszych rozwiązań jak Synapse czy Indy (jeżeli strona nie używa JavaSrciptu). Ale to jego sprawa. A i sadzę, że tutaj raczej nie uzyska konkretnej pomocy, jeżeli nie pokaże konkretnego kodu i nie poprosi o pomoc w KONKRETNYM problemie ;/

0
gytuk napisał(a):

Olesio, teraz pocisnales, wez tutaj nie karm trolli sklonnych spamowac na nk czy facebooku :),

jeszcze to sprzedawac....

a co do nk, to 2 lata temu napisalem tez cos takiego, ale tylko dla testow, po jakims czasie nk zaczelo blokwoac ilosc wiaodmoscci wysylanych szybko po sobie.
Prawidlowo.

Mialem cos napisac do temetu, przyklad sciszania, ale jednka sie wtrzymam i domoroslych spamerow karmic nie bede.

rozumiem ze sami takie programy tworzycie, a jak ktoś inny chce stworzyć to zaraz go nazywasz trolem, a czy ja coś pisałem ze chce sprzedawać albo spamować na nk? mogę być i trolem, debilem, noobem i jak tylko chcecie mnie nazywajcie, ale łatwiej mi napisać na forum i uzyskać odpowiedz niż siedzieć i tygodniami szukać kodów, toć chyba z niczego kodu nie wyczaruje. jak widać dużo osób potrafi tworzyć boty i obsługiwać za pomocą delphi różne strony, yt, nk fb itd. tez chce umieć, a wolałbym szybciej to opanować.

do swoich programów chce dodawać funkcję strony startowej, nigdzie w internecie nie mogę znaleźć jak ustawić stronę startową w firefox i opera za pomocą delphi, a wydziałem sporo programów, które to robią, tez będę musiał chyba do tego wyczarować kod, bo nikt ze mną się tym nie podzieli, taka wiedza jest zakazana w internecie. Albo sam myślisz tygodniami jak to zrobić i wymyślasz jakiś nowy sposób lub podobny, albo pytasz kogoś kto tego dokonał i dostajesz odpowiedz w 5 minut, w ten sposób zaoszczędzasz na czasie: )

0

mogę być i trolem, debilem, noobem i jak tylko chcecie mnie nazywajcie, ale łatwiej mi napisać na forum i uzyskać odpowiedz niż siedzieć i tygodniami szukać kodów, toć chyba z niczego kodu nie wyczaruje.

No właśnie, bo bez TBrain ani rusz. A z TBrain i googlami można już dużo napisać bez pytania na forach i narzekania jakim to się noobem jest.
Ja proponuję koledze zamiast lamienia się na forach pójście po rozum do głowy i naukę a nie pytanie "Jak mam to zrobić i od czego zacząć bo nic nie umiem". Naprawdę nie mamy czasu na tłumaczenie tobie milion razy tylko dlatego bo ty nie masz nawet podstawowej wiedzy w danym temacie i jesteś zbyt tępy żeby spytać googla. Tutaj nie tłumaczymy tego co jest w googlach, nie tłumaczymy też newbim jak pisać pr0-haxiorskie-programy. Tutaj pomagamy z problemami które pojawiają się u osób które ogarniają język i usiłują poznać nową technologię/mają problem z używaną technologią.
Przykładowe twoje pytanie brzmi: "Jak mam zrobić X?". Nic o tym nie wiesz i oczekujesz że my nagle napiszemy kurs na piętnaście stron dla CIEBIE a może jeszcze damy gotowy kod bo w końcu to my się mamy nauczyć a nie ty. Czyż nie?
Oczekujesz tego że jak czegoś nie wiesz to na forum tobie pomogą, a tak nie jest w życiu niestety. Naucz się kolego rozwiązywać problemy i rób tak jak normalni ludzie, a nie męcząc innych swoimi debilnymi pomysłami na których realizację nie masz motywacji i oczekujesz szybkich wyników. Nie na tym polega programowanie. Programowanie to godziny czytania dokumentacji, tysięcy nieudanych prób i dni debuggowania błędów.

do swoich programów chce dodawać funkcję strony startowej, nigdzie w internecie nie mogę znaleźć jak ustawić stronę startową w firefox i opera za pomocą delphi, a wydziałem sporo programów, które to robią, tez będę musiał chyba do tego wyczarować kod, bo nikt ze mną się tym nie podzieli, taka wiedza jest zakazana w internecie. Albo sam myślisz tygodniami jak to zrobić i wymyślasz jakiś nowy sposób lub podobny, albo pytasz kogoś kto tego dokonał i dostajesz odpowiedz w 5 minut, w ten sposób zaoszczędzasz na czasie: )

Tak, gorzej gdy nikt nie będzie wiedział/będzie tobą znudzony/nie będziesz mieć jak zapytać. Ale po co samemu się uczyć! Lepiej żeby inni się uczyli za ciebie! Przecież w końcu po to się uczysz programować żeby nas nauczyć używać googla i przeklejać kody co?

0

tak jestem leniwy, ale pomyśl sobie ze kiedyś wynaleziono koło, i każdy z niego korzysta, jeżeli każdy by miał wynajdywać na nowo koło to ile by mu zajęło żeby stworzył samochód? tak samo z kodem jest

0
nowyuser napisał(a):

tak jestem leniwy, ale pomyśl sobie ze kiedyś wynaleziono koło, i każdy z niego korzysta, jeżeli każdy by miał wynajdywać na nowo koło to ile by mu zajęło żeby stworzył samochód? tak samo z kodem jest

Tak? To może powiedz to sobie i zacznij używać googla zamiast zadawać pytania które już były zadane miliony razy. Zacznij samemu pracować, bo my tutaj nie jesteśmy od tego żeby ciebie niańczyć. Skoro chcesz się nauczyć programować to zamiast lecieć z pytaniami do nas najpierw je samemu rozważaj. Bo jednak my umiemy myśleć i dlatego umiemy odpowiadać ale nie po to żeby inni nie musieli tylko według zasady co dwie głowy to nie jedna.

0

A w czym problem z odczytaniem ustawień IE z rejestru w odpowiednim kluczu? To samo z Operą. Przecież w APPDATA "siedzi", a przynajmniej powinien plik konfiguracyjny typu ini, gdzie można to ustawić. Jeżeli nie wiesz konkretnie jaki wpis to ustaw jakiś egzotyczny fikcyjny adres, odpowiednio długi - na przykład niekorzystamzeswojegotbrain.net i wyszukaj go w rejestrze dla IE oraz w katalogu z konfiguracją Opery. Pisałem kiedyś gotowy programik, który zmienia zarówno stronę startową IE jak i Opery oraz je odczytuje. Z innych przeglądarek nie korzystam w ogóle, bo głownie używam Opery. Ale gotowców nie podsyłam jak wiesz. Poza tym masz własny TBrain to z niego korzystaj. Jeżeli Twój TBrain nie zawiera deklaracji obiektów, których nie poznał to możesz go wzbogacić dodając moduł iusegoogle.pas ;)

0

witam, ostatnio nie miałem czasu, ale pomyślałem dziś ze chce w końcu ten problem rozwiązać i próbowałem skompilować kod olesia z tej stronki Obsługa protokołu HTTP przy użyciu pakietu Synapse i mi wyskakuje jakiś błąd podświetla po Var SynHttp : THttpSend; (Undecleared identifier:'THttpSend') zresztą to nie ma na tej stronie kodu który mnie interesuje. Obecnie mnie nic nie interesuje nawet programowanie, chce tylko się nauczyć jednego, nawet mnie nie interesuje jak to działa, chce tylko umieć zastosować to w programie, wytłumaczę problem może pomożecie:

Jest strona z adresem np. costam pl na tej stronie nie ma nic tylko 20 wyrazów, albo oddzielonych przecinkami albo spacjami albo enterami czyli każdy wyraz w nowej linijce, chce umieć kopiować te nazwy zwierzaków do Edita np. za pomocą kliknięć 20 przycisków, każdy przycisk by kopiował odpowiedni wyraz, może wiecie gdzie bym znalazł jakieś kody, dzięki czemu mógłbym to opanować, obecnie logowanie i pobieranie obrazków mnie nie interesuje.

Pobrałem te moduły synapse, ale zamiast sswin32.pas był tylko sswin32.txt nie wiem czy tak powinno być. A i jeszcze jedno czy te moduły synapse to mam trzymać obok plików źródłowych programu czy w jakimś katalogu zainstalowanego Delphi.

1
nowyuser napisał(a):

Pobrałem te moduły synapse, ale zamiast sswin32.pas był tylko sswin32.txt nie wiem czy tak powinno być. A i jeszcze jedno czy te moduły synapse to mam trzymać obok plików źródłowych programu czy w jakimś katalogu zainstalowanego Delphi.

Widzę, że nie ogarniasz w ogóle podstaw języka. Ale już z dodaniem modułu httpsend to sekcji uses chyba sobie poradziłeś. A co do Synapse to ja opierałem się w artykule na starszej wersji Synapse, w której sswin32 był osobnym modułem. Natomiast nie wiem skąd pobierałeś te Synapse, ale z tego co widzę nie ma tam żadnego pliku *.txt w podkatalogu Source/Lib. Jest tylko sswin32.inc. Wrzuciłem wszystkie moduły na szybko do jednego katalogu, dodałem moduł httpsend i zrobiłem deklaracje THttpSend i się bez problemu wszystko skompilowało pod Delphi 7 Personal. Natomiast na pytanie gdzie trzymać moduły, masz odpowiedź w moim artykule zaraz na początku w 1. Instalacja pakietu., wystarczy tylko wszystko uważnie przeczytać.

0

rzeczywiście sswin32.inc nie dopatrzyłem
zabrakło JPEG i httpsend, kto by pomyślał ze trzeba te moduły dodawać do uses, zresztą w kodzie były te moduły jak mogłem tego nie zauważyć, programik skompilował się więc jest już ze mnie Wielki Programista: )
instalacja pakietu pisało, znowu uważnie nie przeczytałem, ale ze mnie gapa, ale przynajmniej już teraz wiem co i jak
z przechwytem obrazu sobie poradziłem, ale chciałbym przechwycić wyraz, nie ma chyba tego na żadnym forum, da radę znaleźć gdzieś jakiś kod, naprowadźcie mnie na coś

1

Nie rozumiem o co chodzi z tym "przechytywaniem wyrazu", ale w moim artykule są również przykłady jak zawartość zmiennej Document (typu TMemoryStream) zapisać i odczytać do zmiennej typu string. Wystarczy najpierw uważniej przeczytać cały artykuł, a dopiero później zadawać KONKRETNE pytania, bo przechwytywanie wyrazu nic mi nie mówi. Jeżeli natomiast chcesz parsować bardziej żlożony kod html to pozostaje odpowiednie użycie funkcji, jak: Pos, Copy i Delete albo modułu do wyrażeń regularnych. Co do tego ostatniego to polecam ten, do pobrania z: http://regexpstudio.com/TRegExpr/TRegExpr.html - są przykłady i dokumentacja. Natomiast temat przenoszę do działu Newbie, bo dotyczy według mnie podstaw, które i tak opisuje mój artykuł jeżeli chodzi o wykorzystanie protokołu HTTP i pakietu Synapse.

0

przejrzałem ten moduł do wyrażeń regularnych, więc wychodzi na to że mój program będzie działał na takiej zasadzie, pobierze kod źródłowy strony html, potem zapisze go do jakiegoś pliku, następnie przechwyci wyrazy przy pomocy modułu wyrażeń regularnych, wy te przechwytywanie nazywacie parsowaniem, żeby się nie męczyć powiedzcie mi który kawałek kodu jest odpowiedzialny za wejście na stronę i pobranie kodu źródłowego html i zapisanie go do pliku, jeżeli to będę wiedział wtedy spróbuje rozszyfrować działanie tego modułu, zresztą jak już będę miał plik tekstowy z kodem źródłowym to i bez wyrażeń regularnych da radę wyciągnąć i wczytać do edytów te nazwy zwierzaków

1

Ja swoje, a Ty uparcie swoje. RTFM! Przeczytaj uważnie mój artykuł. Nie jest tego aż tak dużo. Ech, no dobra, bo ja mogę pisać przeczytaj, a Ty dalej nie będziesz czytał uważne. Poszukaj sobie w treści przykładowych kodów w tym artykule słowa FPage. Natomiast o wyrażeniach regularnych stron w Google jest mnóstwo. Pomijam fakt, że moduł, który Tobie poleciłem również zawiera dokumentację i przykłady zastosowania.

0

Witam, uwziąłem się i prześledziłem wszystko co mi podał Olesio, siedziałem dziś nad tym długo, ale zrozumiałem jak co działa.
Oto wynik mojej pracy:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, httpsend, StdCtrls, RegExpr;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button2: TButton;
    ListBox1: TListBox;
    Button1: TButton;

    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
const
  Opera_UserAgent = 'Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.10';
var
  TF : TextFile;
  FPage : string;
  SynHttp : THttpSend;

begin
  AssignFile(TF, 'zrodlo.html');
  Rewrite(TF);
  SynHttp := THttpSend.Create;
  SynHttp.UserAgent := Opera_UserAgent;
  SynHttp.HTTPMethod('GET', 'http://www.google.pl');
  SetLength(FPage, SynHttp.Document.Size);
  SynHttp.Document.Read(Pointer(FPage)^, Length(FPage));
  //Writeln(TF, FPage);
  Memo1.Text := FPage;
  SynHttp.Free;
  CloseFile(TF);
end;



         function znajdzZwierze (const AInputString : string) : string;

 const
   kodZwierzaka = '\#+2+.+\#+1';
            var
  r : TRegExpr;
 begin
  Result := '';
  r := TRegExpr.Create;

  try
     r.Expression := kodZwierzaka;
     if r.Exec (AInputString) then
      REPEAT
       Result := Result + r.Match [0] + ',';
      UNTIL not r.ExecNext;
    finally r.Free;
   end;
 end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 listbox1.Items.CommaText := znajdzZwierze (Memo1.Text);
end;

end.

Teraz jednym z problemów jest ze po wywołaniu procedury onclick przycisku Button2 czasami załaduje się kod całej strony do Memo1, a czasami tylko kawałek, a chciałbym żeby ładował się ciągle cały kod.

Kolejny problem jest z wyrażeniem regularnym
Na razie wymyśliłem takie: '#+2+.+#+1' ale to wyrażenie nie działa tak jak chce.
Chce żeby mi działało w inny sposób, na razie działa tak, mam kod źródłowy strony:

<body>
afjkafakfa#zmija#jifds
kopelat pies i kot *hsmoki*
jak ci na imie to  to jest to
jkdfsajfd;safjds$rybka$jdkfafjdis
*hryba*;daffkafa
kjdsafj*hkotek*
#2zwierz nr 1#1jidfsifjdafdsjfi
sda
#2zwierze nr 5#1jidfsifjdafdsjfi
sda
</body>

po parsowaniu powstaje mi oto taki wynik:

#2zwierz nr 3#1jidfsifjdafdsjfi
sda
#2zwierze nr 5#1

A moim celem jest zmienić te wyrażenie żeby wynik był taki

#2zwierz nr 3#1
#2zwierze nr 5#1

Ale chce żeby wyrażenie działało na takiej zasadzie ze pomiędzy #2 i #1 mógł być dowolny znak, ale jak widać program odczytuje mi od pierwszego #2 do ostatniego #1 pomijając te w środku.

Edit:
poprawiłem swój kod wygląda on teraz tak: kodZwierzaka='#2[^\s]+#1';
nazwy zwierzaków są każdy w nowej lini i pomiędzy #2 i #1 nie będzie spacji tylko nazwa zwierzaka

1

Pierwszea moja myśl po ujrzeniu Twojego wyrażenia regularnego: WTF?! Skąd tyś takie coś wywnioskował i wymyślił. Spoko. Ja też na początku nie wiedziałem jakie są ogólne regexpry, a z dokumentacji wiele nie wywnioskoałem, ale jak byś na spokojnie pogooglował znalazł byś w cholere i ciut ciut przykładowych wyrażeń. Ja bym zrobił tak jak poniżej. Sprawdziłem i o ile dobrze zrozumiałem Twoje przykłady, to działa prawidłowo.

uses
  regexpr;

function OgarnijWyrazeniaRegularne(AInputStr : string) : TStringList;
var
  R : TRegExpr;
begin
  Result := TStringList.Create;
  R := TRegExpr.Create;
  try
    R.Expression := '#2(.+?)#1';
    if R.Exec(AInputStr) then
    begin
      repeat
        Result.Add(R.Match[0]);
      until not R.ExecNext;
    end
  finally
    R.Free;
  end;
end;

Przykład użycia:

Memo.Text := OgarnijWyrazeniaRegularne(FPage).Text;

Natomiast co do zapisu kodu źródłowego strony do pliku, to skoro już korzystasz z modułów i tak odwołujących się do VCL, czyli na przykład do zawartości modułu jak Classes itp. To skorzystaj do zapisania pliku z klasy TStringList. Ma ona metody LoadFromStream, więc od razu załadujesz własnośc Document komponentu THttpSend. A później dajesz po prostu SaveToFile. Ja w przeciwieństwie do nawyków niektórych tutaj, jeśli nie musze to nie po prostu używam konstrukcji z TextFile i w ogóle File. Chyba, że to jest ode mnie wymagane. Lepije jeśli już robisz program pod VCL skorzystać z rozwiązań jak TStrngList, ewentualnie z funkcji WinAPI. Tak, wiem mogę być nudny z tym WinAPI, ale kto nie zjadał kiedyś crackersów regularnie ten nie zrozumie, że pewne rzeczy fajniej wyglądają jak są możliwie rozmiarowo jak najmniejsze i zgrabniejsze niż pseudo pr0 programiki pisane kiedyś w "wizual bejziq" ;) Po prostu lubię stosować WinAPI kiedy umiem i mogę, no i co mi zrobicie? Nic :P Ale to oczywiście żartobliwie piszę, bo waże żebyśmy umieli zakodować to co chcemy tak aby działało, a jednocześnine było w miarę szybkie, optymalne oraz idiotoodporne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1