[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. 0xd098d0b3d0

    0xd098d0b3d0 New Member

    Joined:
    26 Oct 2012
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    Code:
    POINT cp; // Глобальная перенменная, где будут держаться координаты.
    Это функция которая переносит курсор по экрану, после чего щелкает мышкой
    Code:
     void ClickPos (int x, int y)
    {
    SetCursorPos(x,y);
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); // жмяк по левой кнопке мыши
    Sleep(30); // Курим ))
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); //Отпускаем кнопку мыши.
    }
    
    Это уже в таймере.
    Code:
    		Stroka_sost->Caption="Координаты кнопки захвачены";
    // Жмем, чтобы визуально показать, что захват координат произошел.		
                    mouse_event(MOUSEEVENTF_LEFTDOWN, 0,0,0,0);   
    		mouse_event(MOUSEEVENTF_LEFTUP, 0,0,0,0);  
    // Загружаем координаты в переменную.		
                    GetCursorPos(&cp);
    //И тут уже в Listbox выводим всякую справочную хрень..		
                    KalibList->Items->Strings[0]="Площадь откалибрована";
    		KalibList->Items->Strings[1]=cp.x;
    		KalibList->Items->Strings[2]=cp.y;
                   	Kalibr->Enabled=false;  // останавливаю таймер
    		}


    Приходится открывать окно браузера, жать кнопку включения таймера, после чего подносить курсор мышки к кнопке которую нужно будет нажимать..

    Но получилось немного не то что хотелось, мб подскажет кто, как координаты указать относитель окна моей программы?
     
  2. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Из текущей координаты вычесть координаты окна.
     
    1 person likes this.
  3. 0xd098d0b3d0

    0xd098d0b3d0 New Member

    Joined:
    26 Oct 2012
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    Вобщем сделал так
    ClickPos(Main->Left+96, Main->Top+423);

    всем спасибо )

    Если кого интересует, что делал вот видяха )

    http://www.youtube.com/watch?v=z4ZsBK60lQA
     
    #7523 0xd098d0b3d0, 31 Dec 2012
    Last edited: 31 Dec 2012
  4. 0xd098d0b3d0

    0xd098d0b3d0 New Member

    Joined:
    26 Oct 2012
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    Появился еще один вопросик )
    Как определить цвет пикселя в определенном месте экрана? Но не в своей программе.
    Допустим пиксель под курсором мышки..

    Приходит в голову, делать принтскрин экрана, и потом уже на нем искать пиксель, но возможно есть другие способы. Подскажите пожалуйста...
     
    #7524 0xd098d0b3d0, 1 Jan 2013
    Last edited: 1 Jan 2013
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    GetPixel или через BitBlt делать копию области и обрабатывать
     
    _________________________
  6. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Функция
    Code:
    int check(int x, int y, int s, struct coord lastRazv, int **arr, struct coord* path, int num);
    
    Так задаются входящие параметры
    Code:
    int main() {
        int s = 5;
        int** arr;
        int i,k, buf;
        for(i=0;i<s;i++) {
            arr = new int*[s];
            for(k=0;k<s;k++) {
                arr[i] = new int[s];
                fscanf(f, "%d", &buf);
                arr[i][k] = buf;
            }
        }
        
        struct coord *path;
        path = (struct coord*)malloc(13*sizeof(struct coord));
        
       struct coord lastRazv;
        int num = 0;
    
       check(0, 0, s, lastRazv, arr, path, num);
    }
    
    При попытке вызова функции программа вылетает. В чем может быть проблема?
     
  7. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    0o Chris o0, передавай объект lastRazv по указателю, поскольку конструктор копирования у тебя, судя по всему, не определен. Как и объект path.

    Ты уверен что до вызова этой функции все работает правильно?
     
    #7527 herfleisch, 4 Jan 2013
    Last edited: 4 Jan 2013
  8. 0xd098d0b3d0

    0xd098d0b3d0 New Member

    Joined:
    26 Oct 2012
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    Парни подскажите как можно осуществить
    Есть файл на хостинге www.site.ru/textfile.txt
    есть программа.
    Нужно, чтобы содержимое файла, считывалось при открытии программы и записывалось в label..
     
  9. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Что значит как? Скачиваешь файл, открываешь его и читаешь, после чего записываешь стринг в свой лабел.
    Ты даже ЯП не указал.
     
  10. 0xd098d0b3d0

    0xd098d0b3d0 New Member

    Joined:
    26 Oct 2012
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    C++ ЯП
    fopen ?
     
  11. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    TFileStream* fs = new TFileStream("mytxt.txt", fmCreate|fmOpenWrite);
    IdHTTP1->Get("http://mysite.ru/thisfile.txt", fs);
    delete fs;

    а дальше читай из файла, например fopen.
     
    1 person likes this.
  12. 0xd098d0b3d0

    0xd098d0b3d0 New Member

    Joined:
    26 Oct 2012
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    stream->Seek(0, soFromBeginning);
    stream->Write(AnsiString(IntToStr(Botx->Value)).c_str(), 1);
    stream->Free();

    Botx->Value это Int.
    Дак вот, в файл записывается только певрое число, допусти если Botx->Value = 374, то в файл писатнет 3, как это исправить?
     
  13. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Ну так ты сам указываешь сколько считывать:
    stream->Write(AnsiString(IntToStr(Botx->Value)).c_str(), 1);
    Напиши 100 - считает сто.
     
  14. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Есть такой файл:
    Code:
    #include <exception>
    #include <curl/curl.h>
    
    class Http 
    {
        CURL *Handle;
    
    	public:
    	   Http();
    		
    };
    
    Http::Http() 
    {
    	Handle = curl_easy_init();
    	if (Handle == NULL)
    	   std::exception();
    }
    	   
    gcc выдает ошибку.
    Code:
    main.cpp:7:10: error: no match for call to ‘(Http) ()’
    
    main.сpp
    Code:
    #include "http.h"
    #include <iostream>
    
    int main(int argc, char **argv)
    {
    	Http Request;
    	Request();
    	
    }
     
  15. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    mironich, ошибка в этой строке
    Code:
    Request();
    Что она должна делать? Конструктор Http::Http() вызывается в этой строчке
    Code:
    Http Request;
     
  16. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Code:
        try {
        WSAData wsa;
        if(WSAStartup(MAKEWORD(2,0), &wsa)) throw "Can't start WSA";
    
        const char* url = "habrahabr.ru";
        SOCKET sock;
        struct sockaddr_in addr;
    
        //MessageBox(NULL, url, "Host", MB_OK);
        sock = socket(AF_INET, SOCK_STREAM, 0);
        if(sock == INVALID_SOCKET) throw "Can't initializate socket";
        addr.sin_family = AF_INET;
        addr.sin_port = htons(80);
        memset(&(addr.sin_zero), 0, 8);
        struct hostent *host;
        host =  gethostbyname(url);
        if(host == NULL) throw "Can't get host";
    
        addr.sin_addr = *(struct in_addr*)host->h_addr_list[0];
        if(connect(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0) throw "Can't connect to server";
        char header[999];
        char buf[1];
        std::stringstream ss;
        std::string head = "GET / HTTP/1.1\r\nHost: ";
        std::string hCont = "\r\n"
                "User-Agent: Mozilla/5.0\r\n"
                "Accept: text/html\r\n"
                "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n"
                "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"
                "Connection: keep-alive\r\n\r\n";
        ss << head << url << hCont;
        ss.read(header, 999);
        //MessageBox(NULL, header, "Headers", MB_OK);
        ss.clear();
        if(send(sock, header, sizeof(header), 0)) throw "Can't send data";
        if(recv(sock, buf, sizeof(buf), 0)) throw "Can't receive data";
        while(buf) {
            buf[0] = NULL;
            recv(sock, buf, sizeof(buf), 0);
            ss << buf;
        }
        std::string result;
        ss >> result;
        cout << result;
        closesocket(sock);
        WSACleanup();
        }
        catch(const char* err) {
            WSACleanup();
            cout << err;
            return 0;
        }
    
    Не хочет отправлять запрос, выдает "Can't send data'. Не могу понять почему.
     
  17. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    не смотрел код, но сдается мне, что все там отправляется, посему и сепшин. сенд возвращает количество переданных байт. число положительное, а значит true. а если тру - то у вас сепшин. проверяйте на равенство SOCKET_ERROR.
     
    1 person likes this.
  18. vitaliy_n73

    vitaliy_n73 Member

    Joined:
    2 Jul 2009
    Messages:
    98
    Likes Received:
    21
    Reputations:
    0
    Вечер добрый,начал учить самостоятельно с++,и вот на первых примерах уже бока,не могу понять что не так,вот код:
    Code:
     
    #include <iostream>
    using namespace std;
    int main()
    {
    enum Days { Sunday, Monday, Tuesday,
    Wednesday, Thursday, Friday, Saturday };
    int choice;
    cout << "Enter a day (0-6): ";
    cin << choice;
    if (choice = Sunday || choice == Saturday)
    cout << "\nYou`re already off on weekends!\n";
    else
    cout << "\nOkay, I`ll put in the vacation day.\n";
    	
    return 0;
    }
    а вот ошибка которую выдает:
    [CODE]1>c:\users\1\documents\visual studio 2008\projects\list3.7\list3.7\ex1.cpp(9) : error C2676: бинарный '<<': 'std::istream' не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору 1>Журнал построения был сохранен в "file://c:\Users\1\Documents\Visual Studio 2008\Projects\list3.7\list3.7\Debug\BuildLog.htm" 1>list3.7 - ошибок 41, предупреждений 0
    Извините за детский вопрос,но блин ничего не могу придумать!аж самому стыдно что пример из книги не могу запустить!Буду благодарен вашей помощи!
     
    #7538 vitaliy_n73, 10 Jan 2013
    Last edited: 10 Jan 2013
  19. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    должно быть >>
     
  20. vitaliy_n73

    vitaliy_n73 Member

    Joined:
    2 Jul 2009
    Messages:
    98
    Likes Received:
    21
    Reputations:
    0
    Спасибо))точно оно!
    опечатка в книге!
    Еще раз огромное спасибо))
     
Thread Status:
Not open for further replies.