Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача по ссылке в функцию 
V
    Опции темы
TaNK
Дата 3.6.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет - вопрос таков - есть dll, в которой описана вот такая функция, dll - загружается динамически
Код

// Функция изменяет в строке первый символ (в верхний регистр, а остальные в нижний)
ShortString UpperOneSimvol (ShortString &st)
{
     String strr,temp,tt;
     strr = Trim(st);
     temp = strr[1];

     int i = 2;
     tt = "";
      while (i<=strr.Length())
       {
          tt = tt + strr[i];
          i++;
       }

      st = AnsiUpperCase(temp) + AnsiLowerCase(tt);
      return st;
}


это заголовочный файл
Код

HINSTANCE dllpoint;
         typedef ShortString (* Upper)(ShortString &);
         Upper OneUpper;


а так работаю с ней...
Код

QStaff->SQL->Text = "insert into tbStaff_NESK values(" + (IntToStr(Kdd_Fil)) + ",'" + OneUpper(Trim(LbFamil->Text)) + "','" + OneUpper(Trim(LbName->Text)) + "','" + OneUpper(Trim(LbSurname->Text)) + "','" + OneUpper(Trim(LbJob->Text)) + "')";

и в этой строке компилятор выдают - не ошибку а предупреждение - 
[C++ Warning] UAdd.cpp(78): W8031 Temporary used for parameter 1

до этого использовал функцию...в которую передавал по значению..но решил переделать..под передачу по ссылке....
я как понимаю не правильно именно тут OneUpper(Trim(LbFamil->Text)) ?



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Rrader
  Дата 3.6.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


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

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



Цитата

В С++ переменной или параметру типа ссылки должна присваиваться ссылка на объект этого же типа. Если типы не совпадают, фактическое значение присваивается временной переменной нужного типа, а адрес этой временной переменной присваивается переменной или параметру типа ссылки. Предупреждение означает, что данная переменная или параметр типа ссылки относится не к тому, что вы ожидали, а к временной переменной. В других ситуациях это предупреждение не выдается.

Компилятор будет генерировать код для преобразования AnsiString в ShortString, и затем временную переменную будет уже передавать в функцию.

Это сообщение отредактировал(а) Rrader - 3.6.2008, 13:48


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Lazin
Дата 3.6.2008, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



передавай по значению
Код

ShortString UpperOneSimvol (ShortString st)

или как константную ссылку
Код

ShortString UpperOneSimvol (const ShortString &st)

твоя проблема в том, что ты пытаешься передать в функцию временную переменную
PM MAIL Skype GTalk   Вверх
TaNK
Дата 3.6.2008, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Lazin @ 3.6.2008,  13:47)
передавай по значению
Код

ShortString UpperOneSimvol (ShortString st)

или как константную ссылку
Код

ShortString UpperOneSimvol (const ShortString &st)

твоя проблема в том, что ты пытаешься передать в функцию временную переменную

всем спсибо кто решил помочь...решил как посоветовал Lazin
Код

ShortString UpperOneSimvol (const ShortString &st)

Lazin +1

Это сообщение отредактировал(а) TaNK - 3.6.2008, 14:37


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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