Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Функция искажает возвращаемое значение.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Я только разбираюсь с С++, так что не судите строго. Делаю функцию в форме, которая читает rss-ленту и выдаёт её для вывода в Мемо. Заголовок: private: char* GetProjects(char *url); Реализация: char* TForm1::GetProjects(char *url) { char* v; char* val; try { CHTTPReader rd("dalance.ru"); if (rd.Get("projects.xml")) { v=rd.GetData(); } } catch (Exception &exception){Application->ShowException(&exception);} val=v; return val; } CHTTPReader - класс-обёртка над wininet. Адрес пока забит жёстко. Переменная v введена для отладки. Проблема: Вместо xml функция выдаёт следующее: "(9љ". Всё. v=rd.GetData(); - в v - xml. val=v; - тоже нормально. return val; - обе переменные становятся "(9љ". То же идёт в выдачу. Если вставляю тот же код в загрузку формы (с выводом прямо в Мемо) - всё работает. Но нужно именно функцией - будет в нескольких местах. Подскажите, пожалуйста, что это за шутки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 01:03 |
|
||
|
Функция искажает возвращаемое значение.
|
|||
|---|---|---|---|
|
#18+
Забыл сказать. Пишу в C++ Builder 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 01:17 |
|
||
|
Функция искажает возвращаемое значение.
|
|||
|---|---|---|---|
|
#18+
CHTTPReader rd; - локальная переменная v=rd.GetData(); - указатель на что-то внутри локальной переменной return - локальные переменные уничтожены (выход из области видимости), указатели стали не корректы И что удивляет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 01:30 |
|
||
|
Функция искажает возвращаемое значение.
|
|||
|---|---|---|---|
|
#18+
Удивляет следующее. Пробовал такой вариант char* val=""; char* TForm1::GetProjects(char *url, char* &val) { try { CHTTPReader rd("dalance.ru"); if (rd.Get("projects.xml")) { val=rd.GetData(); } } catch (Exception &exception){Application->ShowException(&exception);} } С соответственным заголовком. После завершения метода внешний val (по идее, глобальный для класса) становится опять же "(9љ". Чую, что сидит какая-то "детская" ошибка, но найти не могу. Раньше работал на нетовских языках, там этих проблем не было. ткните носом, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 01:41 |
|
||
|
Функция искажает возвращаемое значение.
|
|||
|---|---|---|---|
|
#18+
измени тип возвращаемого значения для твоей функции на std::string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 01:48 |
|
||
|
Функция искажает возвращаемое значение.
|
|||
|---|---|---|---|
|
#18+
MasterZiv, спасибо, заработало. Только с AnsiString. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 02:06 |
|
||
|
Функция искажает возвращаемое значение.
|
|||
|---|---|---|---|
|
#18+
MihalythПосле завершения метода внешний val (по идее, глобальный для класса)... Дружеский совет, если ты не понимаешь отличие УКАЗАТЕЛЯ от переменной хранящей значения - удали с компьютера C и поставь Бейсик. Кернигана с Ричи жалко, явно сейчас в гробу переворачиваются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 02:10 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2019446]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 128ms |

| 0 / 0 |
