Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2011, 23:11   #11
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от [CACHE] Посмотреть сообщение
Код:
DWORD outbyte;
или
Код:
PDWORD outbyte;
- уже дело лично каждого, хранить в переменной ее значение или линк - так что это кому как захочется, при использовании единственная разница(ну и все вытекающие) + инициализация(хотя да, все же удобней Ваш вариант)
Ясен перец, но тогда не стоит забывать выделять память вручную под значение (чего не было в вашем коде).

Цитата:
Сообщение от [CACHE] Посмотреть сообщение
это filename. код был написан хер знает во сколько (ночи)утра, не откомпилирован и тем более не проверен. извините мою тупость.
Тогда продолжу свою мысль из предыдущего моего поста:
во-вторых - нельзя складывать указатели. Для конкатенации строк используется strcat (CRT) или lstrcat (WinAPI)

Цитата:
Сообщение от [CACHE] Посмотреть сообщение
мне нахрен не нужно ограничение по длине адреса и пути на сервере, поэтому Ваш способ не подходит для моего случая. огромное спасибо за помощь.
Тогда используйте std::string
Код:
std::string filename;
std::string addr;

std::cin >> filename >> addr;

// convert to const char* (LPCSTR)
filename.c_str();
addr.c_str();
Цитата:
Сообщение от [CACHE] Посмотреть сообщение
и еще: пытаюсь динамически выделять память под данные ответа, но они как-то затираются, что-ли:
Код:
...
    char* RB = new char[1024];
...

bResults = InternetReadFile( hRequest, rcve, 1024, &outbyte);

cout<<"FStack Kbytes: "<<outbyte/1024<<"; FStack data addr: "<<&rcve<<endl;

    while (bResults && (outbyte>=1024)){
        i++;
        RB = new char[1024*(i-1)];
        for(int k=0;k<1024*(i-1);k++)RB[k] = rcve[k];
        rcve = new char[1024*i];
        for(int k=0;k<1024*(i-1);k++)rcve[k] = RB[k];
        bResults = InternetReadFile( hRequest, rcve, 1024, &outbyte);
    };
...
Затирается это ещё не так плохо, как то, что здесь утечка памяти. Вы забываете освобождать память, когда она боле не нужна. Чтобы не парится на этот счёт, можно использовать стандартный контейнер std::vector
Код:
std::vector<char> data;
char* chunk = new char[1024];

do {
  bResults = InternetReadFile(hRequest, chunk, 1024, &outbyte);
  data.insert(data.end(), chunk, chunk + outbyte);
} while (bResults && (outbyte > 0));

delete[] chunk; // освобождаем память.
А вообще резонно заметили, что стоило бы вам C++ изучить получше для начала.

Последний раз редактировалось netrino; 26.06.2011 в 23:13.
netrino вне форума Ответить с цитированием
Старый 28.06.2011, 21:52   #12
[CACHE]
 
Аватар для [CACHE]
 
Регистрация: 25.06.2011
Сообщений: 8
По умолчанию

ладно, всем спасибо большое. спасибо за решения, подсказки и прочие "наставления на путь истинный"
const BOOL HumanToHuman = (Human.toHuman=="Wolf");
cout<<HumanToHuman<<endl; //TRUE
код неверный, но все меня поняли...
[CACHE] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Wininet проверкa отправки Dan4ik95 Работа с сетью в Delphi 2 23.01.2011 07:28
WinInet vitalik007 Работа с сетью в Delphi 1 14.10.2007 13:09
проблема с wininet API delphi_coder Работа с сетью в Delphi 4 18.09.2007 14:08
Подключение через WinInet SHEI'TI Работа с сетью в Delphi 1 15.02.2007 19:53