Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2013, 18:35   #1
marwell.
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 63
Вопрос не срабатывает процедура

доброго времени суток
почему то не срабатывает процедура
Код:
procedure TForm1.add_managers(cbx: TComboBox; str:string);
var name_m: string;
begin
name_m:=cbx.Text;
if (name_m<>'') and (Pos(name_m, str)=0) then begin
 str:=str+','+name_m;
 cbx.Items.Add(name_m);
end;
end;
она должна проверить условие(длина введенного в комбобокс текста >0, и введенный текст не встречается в строке str), и вслучае выполнения этих условий добавить этот текст в список комбобокса, и добавить в строку str.
В список комбобокса текст добавляется, а в строку почему то нет.
вызываю так
Код:
add_managers(ComboBox4, managers);
marwell. вне форума Ответить с цитированием
Старый 25.02.2013, 19:45   #2
marwell.
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 63
По умолчанию

а, нет, срабатывает оказывается. Но как то странно. Если внутри этой процедуры делать showmessage(str), то видно что конкатенация сработала. Если же после процедуры делать showmessage(managers), то строка осталась той же

Последний раз редактировалось marwell.; 25.02.2013 в 19:48. Причина: новые данные
marwell. вне форума Ответить с цитированием
Старый 25.02.2013, 19:47   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Код:
procedure TForm1.add_managers(cbx: TComboBox; var str:string);
Изучаем способы передачи параметров в подпрограммы. Со строками ещё хитрость, что может поменяться указатель на неё из-за copy-on-demand
phomm вне форума Ответить с цитированием
Старый 26.02.2013, 01:14   #4
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Доброго времени суток!
можете и так:
Код:
var
str:string

procedure TForm1.add_managers(cbx: TComboBox); :)
var name_m: string;
begin
name_m:=cbx.Text;
if (name_m<>'') and (Pos(name_m, str)=0) then begin
 str:=str+','+name_m;
 cbx.Items.Add(name_m);
end;
end;

str:=managers;
add_managers(ComboBox4);
По другому подпрограммка для себя пишет str!
str у вас больше не где не видна!
С уважением,
Volkogriz!
Не количеством плюсов измеряется репутация человека...!

Последний раз редактировалось Volkogriz; 26.02.2013 в 03:21.
Volkogriz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не срабатывает функция. Aries Общие вопросы C/C++ 1 30.05.2012 19:37
Не срабатывает replaceWith Nikita090 JavaScript, Ajax 2 06.01.2012 01:17
Условие не срабатывает segail Microsoft Office Excel 5 15.08.2010 15:10
Не срабатывает чексбокс Syltan PHP 2 12.07.2010 03:29
Индекс не срабатывает GenniY БД в Delphi 4 24.11.2009 15:05