![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 04.02.2010
Сообщений: 5
|
![]()
Делаю так
Код:
Код:
Код:
Почему из первоначального TStringList удаляется строка и как сделать чтобы не удалялась? Последний раз редактировалось onkofe; 06.11.2011 в 21:13. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Код:
и var там не надо. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 04.02.2010
Сообщений: 5
|
![]()
И как быть тогда?
Ведь наверное если бы я хотел удалить строку из List1, я бы не стал вызывать для этого функцию Test() Последний раз редактировалось onkofe; 06.11.2011 в 21:20. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
вам надо чтоб передалась компия объекта?
руками создавайте копию, и через Assign сравняйте их(для TStrings(и потомков) работает) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 04.02.2010
Сообщений: 5
|
![]()
я изучаю различие в передачи параметров в функцию
procedure TForm1.Test(X1: TstringList); procedure TForm1.Test(var X1: TstringList); procedure TForm1.Test(out X1: TstringList); procedure TForm1.Test(const X1: TstringList); |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
вы бы сначало изучили что такое объекты(class) и как они хранятся.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#7 |
Регистрация: 04.02.2010
Сообщений: 5
|
![]()
В книге черным по белому написано что при передаче по значеню значение аргументов копируется и на этом связь между аргументами и переменными разрывается.
Но как видим на деле ничего подобного не происходит... |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
объекты хранятся по указателю на данные, потому копируется этот указатель.
объекты это вам не рядовая переменная. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#9 |
Регистрация: 04.02.2010
Сообщений: 5
|
![]()
то есть только таким образом?
Код:
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
да, правда тут особо смысла нет, но по крайней мере исходный обьект не меняется.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменение переменной в Timer | Welotirit | Общие вопросы Delphi | 6 | 13.03.2011 19:27 |
Изменение переменной | Алексей_xXx | Общие вопросы C/C++ | 1 | 11.12.2009 10:49 |
преобразование переменной AnsiString в PAnsiChar для использования в процедуре loadlibrary | The Best | Общие вопросы Delphi | 2 | 12.07.2009 20:42 |
Изменение переменной | Ant1Player | PHP | 8 | 30.03.2009 22:07 |
Изменение переменной | yura-cat | Помощь студентам | 7 | 20.09.2008 17:42 |