Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
28.05.2014, 01:03
|
|||
|---|---|---|---|
|
|||
Функция искажает возвращаемое значение. |
|||
|
#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:17
|
|||
|---|---|---|---|
|
|||
Функция искажает возвращаемое значение. |
|||
|
#18+
Забыл сказать. Пишу в C++ Builder 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.05.2014, 01:30
|
|||
|---|---|---|---|
|
|||
Функция искажает возвращаемое значение. |
|||
|
#18+
CHTTPReader rd; - локальная переменная v=rd.GetData(); - указатель на что-то внутри локальной переменной return - локальные переменные уничтожены (выход из области видимости), указатели стали не корректы И что удивляет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.05.2014, 01:41
|
|||
|---|---|---|---|
|
|||
Функция искажает возвращаемое значение. |
|||
|
#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:48
|
|||
|---|---|---|---|
Функция искажает возвращаемое значение. |
|||
|
#18+
измени тип возвращаемого значения для твоей функции на std::string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.05.2014, 02:06
|
|||
|---|---|---|---|
|
|||
Функция искажает возвращаемое значение. |
|||
|
#18+
MasterZiv, спасибо, заработало. Только с AnsiString. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.05.2014, 02:10
|
|||
|---|---|---|---|
|
|||
Функция искажает возвращаемое значение. |
|||
|
#18+
MihalythПосле завершения метода внешний val (по идее, глобальный для класса)... Дружеский совет, если ты не понимаешь отличие УКАЗАТЕЛЯ от переменной хранящей значения - удали с компьютера C и поставь Бейсик. Кернигана с Ричи жалко, явно сейчас в гробу переворачиваются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2019446]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 176ms |

| 0 / 0 |
