Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Delphi] Nie mogę wykorzystać Hgg w wierszu poleceń ?

21 Sie 2007 12:27 1748 20
  • Użytkownik usunął konto  
  • VIP Zasłużony dla elektroda
    Witam, z tego co wiem, Delphi to taki obiektowy pascal. A więc powinieneś móc utworzyć sobie obiekt klasy HGG i wszystko poustawiać programowo - tak jak w C++. Kiedyś miałem delphi i wiem, że dało się to zrobić, wystarczy że poczytasz dokumentację Indy i zobaczysz jaki kod generuje dodawanie komponentów do formy.

    Pozdrawiam, Krzysztof.
  • Użytkownik usunął konto  
  • Poziom 42  
    poza tym, że dodasz w uses, musisz dynamicznie kreować klasę THGG.
    Jednakże w sekcji uses musisz dodać:

    Cytat:
    .... IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, HGG;


    to po pierwsze, później musisz zadeklarować sobie np zmienną globalną typu

    Cytat:
    var
    mojegg: THGG;



    następnie gdzieś w kodzie przy kreowaniu czegoś tam:

    Cytat:
    mojegg := THGG.Create(nil);


    ale nie zapomnij na końcu przed wyjściem dokonać destrukcji w jakimś zdarzeniu OnClose czy OnDestroy:

    Cytat:
    FreeAndNil(mojegg);


    gdy wykonasz powyższe możesz się czuć jakgdybyś miał położony na formę komponent i możesz go dokładnie tak samo używać - tzn np wysyłać wiadomości, ustawiać w kodzie jego proprtiesy np adres IP serwera GG i tym podobne.

    a gdybyś chciał jeszcze do tego obsługiwać jego zdarzenia to musiałbyś podłączyć pod nie odpowiednie swoje procedury - ale to chyba nie jest ci potrzebne bo nie wspominałeś o tym

    pozdrawiam i powodzenia
  • Użytkownik usunął konto  
  • Pomocny post
    Poziom 42  
    proszę bardzo:

    biorąc pod uwagę poprzednio podany przeze mnie kod:

    Cytat:
    mojegg := THGG.Create(nil);


    (czyli utworzyłeś własną klasę mojegg)

    - properiesy dla niej ustawiasz tak:

    Cytat:
    mojegg.host := '217.17.45.147';
    mojegg.Status := usNotAvailable;


    itd - chyba już zrozumiałe - natomiast gdy chcesz skorzystać z funkcji wysłania komunikatu to już chyba wiesz bo zapewne z komponentem też to robiłeś:

    Cytat:
    mojegg.SendMessage(305240, 'jakiś tekst');


    gdzie nr 305240 to czyjś tam nr GG a drugi parametr to tekst jaki chcesz wysłać

    tylko (szczególnie że jesteś początkujący) nie zapomnij przy zamknięciu programu zniszczyć swojej ręcznie utworzonej klasy:

    Cytat:
    FreeAndNil(mojegg);


    trzeba to zrobić "ręcznie" ponieważ nie jest to komponent położony na formę - gdzie w takim przypadku dba o to kod Delphi. Zawsze jest zasada, że gdy sam kreujesz jakiś obiekt to sam go zwalniasz.

    pozdrawiam i powodzenia
  • Użytkownik usunął konto  
  • Pomocny post
    Poziom 42  
    no to nie dziwne że wywala ci taki błąd skoro napisałeś tak:

    Cytat:
    klasa.Number := 'XXXXXX';

    (rozumiem że := zapomniałeś tu tylko wkleić)

    a powinieneś napisać tak:

    Cytat:
    klasa.Number := 123456;


    przecież jeśli coś piszesz w apostrofach 'XXX' to delphi traktuje to jako string (łańcuch tekstowy)

    a tu numer trzeba podać w postaci liczby!

    gdybyś miał formatkę i na niej leżałby EDIT by z niego wczytać numer GG to musiałbyś użyć instrukcji:

    Cytat:
    klasa.Number := StrToInt(Edit1.Text);


    a jeśli jest to aplikacja konsolowa to nie ma formatki i numer być może pobierasz ze zmiennej z linii komend - tak więc musiałbyś to zrobić tak:

    Cytat:
    klasa.Number := StrToInt(zmienna);

    gdzie zmienna to string zawierający numer GG

    pozdrawiam
  • Użytkownik usunął konto  
  • Poziom 42  
    a czy ja tobie nie wysyłałem ???? ;) jesli wysyłałem to na pewno dobrą bo sam tej wersji bardzo długo używałem w Delphi7. (być może coś źle ścieżki poustawiałeś w Delphi albo coś innego) ale sprawdź sobie w folderze gdzie ci się zainstalowały źródła INDY że tam na 100% masz plik IdTCPConnection.pas bo musi być, bez tego nie działa większość komponentów Indy
  • Użytkownik usunął konto  
  • Poziom 42  
    a zastanawiałeś się czy nie zorganizować tak tego programu aby nie trzeba było czekać na polecenia tylko wszytsko wpisać z linii komend np:

    Cytat:
    send2gg /mn /mh /no /tekst

    gdzie:

    mn - własny nr GG
    mh - własne hasło
    no - numer "ofiary" do której chcesz coś przesłać ;)
    tekst - to tekst który masz wysłać


    i już

    a jeśli chcesz jednak robić interfejs taki ala okienko może w konsoli to tu ci nie za bardzo pomogę bo przyznam, że nigdy nie robiłem aplikacji konsolowych jakoś wolę okienka windowsowe ;)

    jednakże taka aplikacja konsolowa którą można wywołać z parametrami mogłaby być oczywiście przydatna bo nawet z jakichś skryptów (BATów) mogłaby być odpalana

    albo możesz zrobić, że tworzysz dla aplikacji plik ini w którym zawierasz swój nr GG, swoje hasło aby za każdym razem tego nie wklepywać. Następnie przy starcie programu wczutujesz go automatycznie a później już tylko:

    Cytat:
    send2gg /numer_adresata /tekst


    prosto łatwo szybko i przyjemnie

    pozdrawiam i powodzenia w walce z jakże przyjemnym Delphi ;)
  • Użytkownik usunął konto  
  • Poziom 42  
    tzn co chciałeś zrobić? przecież nie trzeba czekać na podanie parametrów - jest coś takiego jak ParamStr(n)

    n to numer parametru podanego w linii polecenia


    - natomiast wczytanie własnego numeru i hasła powinno odbyć się wcześniej z pliku tekstowego
  • Użytkownik usunął konto  
  • Poziom 42  
    poczekaj bo może się nie rozumiemy - powiedz mi tylko czy nie znasz polecenia ParamStr ? czy poprostu nie chcesz z tego typu parametrów skorzystać? to wtedy zrozumiem ;)
  • Użytkownik usunął konto  
  • Pomocny post
    Poziom 42  
    aha no nie ma coś się rumienić - trza dopytać - ludziska tu zawsze odpowiedzą,

    otóż - jeśli po starcie programu ustalisz sobie kilka zmiennych tak jak masz nawet stringowych - to wczytaj do nich zawartość w ten sposób:

    jeśli było:

    Cytat:
    send2gg /ala /ola /kotek


    to zeklaruj zmienne np:
    Cytat:
    zm1, zm2, zm3: String;


    a następnie po starcie programu:

    Cytat:
    zm1 := ParamStr(1);
    zm2 := ParamStr(2);
    zm3 := ParamStr(3);


    i zobacz co będziesz miał w zmiennych, otóż w zm1 będziesz miał "/ala" z zm2 będziesz miał "/ola" itd - rozumiesz??
    celowo nie napisałem ParamStr(0) bo ten paramter zwraca PatchName czyli nazwę samego pliku wykonywalnego exe wraz z jego ścieżką

    popróbuj z tym i na pewno będziesz zadowolony a zarumienienie samo przejdzie ;)

    pozdrówka
  • Użytkownik usunął konto  
  • Poziom 42  
    nie ma za co - tym bardziej zyczę powodzenia w walce z okienkami - ale pamiętaj, że i tu polecenie ParamStr bardzo się czasem przydaje więc je sobie przetrenuj dobrze. Szczególnie często bywa użyteczny ParamStr(0) własnie ;)

    pozdrówka
  • Użytkownik usunął konto