
20.01.2010, 14:49
|
|
Постоянный
Регистрация: 12.07.2006
Сообщений: 327
С нами:
10437270
Репутация:
117
|
|
первый элемент его равен "A",
++drive[0]; прибавим к нему 1 и получим B
|
|
|

20.01.2010, 16:18
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами:
9223466
Репутация:
3171
|
|
C++ Builder.
Собственно, обстоятельства заставили сесть за эту штуку.И тут же возник вопрос,как осуществляется работа с сетью? Загуглил на тему,нашел множество упоминаний про компонент idHTTP.А теперь собственно вопросы.Так как на дельфи я писал последний раз года два назад,и это был калькулятор,то никаких компонентов использовать не приходилось.И соответствнно,где их брать - я понятия не имею.Как подключить этот самый idHTTP к C++ Builder? Встроеный ли он? Откуда его скачать,и как подключить к коду? Я так понял,работа на Builder, сводиться к объектам и классам,тоесть и вызов будет примерно такой:
Код:
iddHTTP->UserAgent = 'Bla bla';
Простая попытка вызова вот так вот,этого самого компонента,привела к ошибки компилятора.так что мне нужен совет.В сети таких ответов нет,ну или я их не на гуглил.Спассбо большое.
|
|
|

20.01.2010, 17:03
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами:
9223466
Репутация:
3171
|
|
Сообщение от m0Hze
C++ Builder.
Собственно, обстоятельства заставили сесть за эту штуку.И тут же возник вопрос,как осуществляется работа с сетью? Загуглил на тему,нашел множество упоминаний про компонент idHTTP.А теперь собственно вопросы.Так как на дельфи я писал последний раз года два назад,и это был калькулятор,то никаких компонентов использовать не приходилось.И соответствнно,где их брать - я понятия не имею.Как подключить этот самый idHTTP к C++ Builder? Встроеный ли он? Откуда его скачать,и как подключить к коду? Я так понял,работа на Builder, сводиться к объектам и классам,тоесть и вызов будет примерно такой:
Код:
iddHTTP->UserAgent = 'Bla bla';
Простая попытка вызова вот так вот,этого самого компонента,привела к ошибки компилятора.так что мне нужен совет.В сети таких ответов нет,ну или я их не на гуглил.Спассбо большое.
Нашел тематический форум,там я нашел ответ,правда немного иной,но переделал под себя,и все заработало.Удивительно.
Так вот новый вопрос.Наипростейший код,вешаем на кнопку по клику событие:
Код:
TIdHTTP *http = new TIdHTTP(NULL);
Label1->Caption = http->Get("http://yandex.ru");
и все бы хорошо,но тыкаем на кнопку,и получаем ошибку.Мол, "302 moved permanently!".А вопрос следующий,как не получать ошибку,а получить непосредственно содержимое страницы,как это работает при получении www.yandex.ru?
То есть, в лейбл должно попасть примрно следующее:
И никаких ошибок.Работаю с буилдером как вы могли понять в первый раз.
|
|
|

20.01.2010, 19:19
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами:
9223466
Репутация:
3171
|
|
Сообщение от m0Hze
Нашел тематический форум,там я нашел ответ,правда немного иной,но переделал под себя,и все заработало.Удивительно.
Так вот новый вопрос.Наипростейший код,вешаем на кнопку по клику событие:
Код:
TIdHTTP *http = new TIdHTTP(NULL);
Label1->Caption = http->Get("http://yandex.ru");
и все бы хорошо,но тыкаем на кнопку,и получаем ошибку.Мол, "302 moved permanently!".А вопрос следующий,как не получать ошибку,а получить непосредственно содержимое страницы,как это работает при получении www.yandex.ru?
То есть, в лейбл должно попасть примрно следующее:
И никаких ошибок.Работаю с буилдером как вы могли понять в первый раз.
Апики,+ к тому же, интересует получение страницы с помощью сокетов, и непосредвственным побайтовым считыванием.Тоесть что то вроде
PHP код:
while(...) read = fread(sock,1024);
Спасибо.
|
|
|

20.01.2010, 21:45
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
С нами:
9963746
Репутация:
180
|
|
Что произойдет если сделать так
A - указатель на динамически созданный массив размерности X
A = (int*) realloc(A, Y*sizeof(int));
Если Y < X.
Уменьшиться размер массива и затрется последний элемент (что собсно и нужно) или что то неопределенное ?
Вот то что я хочу сделать
Код:
int main(){
int *mas = new int [5];
int mas1[]={1,2,3,4,5};
for (int i=0; i<5; i++)
mas[i] = mas1[i];
mas = (int*) realloc(mas, 3*sizeof(int));
for (int i=0; i<5; i++)
cout<<mas[i]<<" ";
cout<<endl;
}
Оно выводит 1 2 3 4 5
Но я не могу проверить выводит оно это потому что:
1. Память не успела затереться но за границу массива мы уже вышли
2. Граница массива осталась на прежнем месте
Последний раз редактировалось cupper; 20.01.2010 в 22:13..
|
|
|

20.01.2010, 22:59
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами:
10386906
Репутация:
599
|
|
realloc не предназначен для перевыделения памяти, выделенной new.
http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/
|
|
|

20.01.2010, 23:39
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
С нами:
9963746
Репутация:
180
|
|
Сообщение от Ra$cal
realloc не предназначен для перевыделения памяти, выделенной new.
http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/
неповеришь, но именно от тудова и взял ее. У меня туговато с англ, если не для изменения размера массива то, пилять, для чего ж она ?
|
|
|

21.01.2010, 01:45
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами:
9320830
Репутация:
86
|
|
Сообщение от cupper
неповеришь, но именно от тудова и взял ее. У меня туговато с англ, если не для изменения размера массива то, пилять, для чего ж она ?
void * realloc ( void * ptr, size_t size );
ptr - Pointer to a memory block previously allocated with malloc.
ptr - Указатель на блок памяти созданный с помощью "malloc"
|
|
|

21.01.2010, 16:47
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
С нами:
9963746
Репутация:
180
|
|
Сообщение от rudvil
ptr - Указатель на блок памяти созданный с помощью "malloc"
ясен хрен что во времена C не было оператора new. Но оно работает. И для увеличения и для уменьшения.
|
|
|

20.01.2010, 23:25
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами:
9223466
Репутация:
3171
|
|
Программисты! Ответьте на вопросы выше 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|