Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция выдает строку, не выдает... 
V
    Опции темы
aush
  Дата 27.8.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



Доброго времени суток!

Столкнулся с проблемой. Вроде просто, но что что-то странное у меня получается....

Итак: имеется функция
Код

char *harrquality(...)
{
AnsiString res2;
res2=...
char *res;
res=res2.c_str();
...
return res;}

Внутри функции все нормально, значения присваиваются. НО. При вызове функции:
Код

{
...
char *te;
te=harrquality(...);}

Переменная te получает ""

Вопрос: где может быть глюк?

Это сообщение отредактировал(а) aush - 11.9.2007, 05:09
PM MAIL   Вверх
dumb
Дата 27.8.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(aush @  27.8.2007,  13:07 Найти цитируемый пост)
char *res;
res=res2.c_str();

нажми F1 и найди описание c_str.
PM MAIL   Вверх
Fazil6
Дата 27.8.2007, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(aush @  27.8.2007,  12:07 Найти цитируемый пост)
Вопрос: где может быть глюк?

не вижу никакого глюка. Работает именно так как ты и написал в коде. Ты пытаешься возвратить указатель на внутренний буфер переменной AnsiString res2 , но при выходе из твоей функции эта переменная удаляется вместе со своим буфером. Поэтому и имеешь то, что имеешь. 
Возвращай AnsiString
Код

 AnsiString harrquality(...)
{
AnsiString res2;

...
return res2;}


Это сообщение отредактировал(а) Fazil6 - 27.8.2007, 12:24
PM MAIL   Вверх
586
Дата 27.8.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



ни какой это не глюк. объект res2 уничтожается при выходе из функции, а char *res - это указатель на буффер в объекте AnsiString res2
PM   Вверх
aush
Дата 27.8.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



dumb,
смотрел, работает как раз правильно и именно так, как и надо...
 
Fazil6, 
586, 
Спасибо! Так и думал, что глюк надо искать в кривых руках))

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

Это сообщение отредактировал(а) aush - 27.8.2007, 13:51
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.