Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Вопрос к знатокам TStringList

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 17.05.2015, 21:11   #1
 Пехотинец
Аватар для NebesaBag
 
NebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражания
Регистрация: 27.12.2011
Сообщений: 73
Популярность: 2425
Сказал(а) спасибо: 334
Поблагодарили 57 раз(а) в 27 сообщениях
 
По умолчанию Вопрос к знатокам TStringList

Здравствуйте.
Допустим есть следующий код:
Код:
procedure One;
var temp:TStringList;
begin
temp:=TStringList.Create;
temp.Add('1');
temp.Add('2');
Two(temp);
temp.Free;
end;

procedure Two(test:TStringList);
begin
Memo1.Text:=test.Text;
end;
Визуально код работает корректно, т.е. в Мемо появляются 2 строки соответствующие.
Но меня всё же смущает, что стринглист во второй процедуре мне не надо было создавать, а я просто указал параметру этот тип.

Подскажите, корректен ли данный код или там есть подводные камни?
Благодарю.

Добавлено через 52 минуты
Товарищ zombiee подсказал, что код корректный и никаких подводных камней не имеет.
Если никто не против, то можно закрыть обсуждение.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]

Пишу софт на заказ(Delphi / C# / PHP-скрипты). Описывайте задачи и цели софта, сообщайте сумму на которую рассчитываете.
Skype: vinozavr (Молдова)


Кто плюсует популярность, подписывайтесь пожалуйста)

Последний раз редактировалось NebesaBag; 17.05.2015 в 22:03. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 18.05.2015, 00:16   #2
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Вопрос к знатокам TStringList

Любая переменная типа класса является указателем на область в памяти, где этот класс находится. Тоесть, по факту, вы передаёте указатель. Но всё же лучше дать компилятору понять, что вы передаёте параметр, как переменную.
Код:
procedure One;
var
  temp: TStringList;
begin
  temp := TStringList.Create;
  temp.Add('1');
  temp.Add('2');
  Two(temp);
  temp.Free;
end;

procedure Two(var test: TStringList);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.AddStrings(test);
end;
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 18.05.2015, 05:19   #3
 Пехотинец
Аватар для NebesaBag
 
NebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражания
Регистрация: 27.12.2011
Сообщений: 73
Популярность: 2425
Сказал(а) спасибо: 334
Поблагодарили 57 раз(а) в 27 сообщениях
 
По умолчанию Re: Вопрос к знатокам TStringList

Если я припишу "var" в параметрах процедуры, то от любого действия над локальной переменной в процедуре Two будет "страдать" родитель.
Не так ли?
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]

Пишу софт на заказ(Delphi / C# / PHP-скрипты). Описывайте задачи и цели софта, сообщайте сумму на которую рассчитываете.
Skype: vinozavr (Молдова)


Кто плюсует популярность, подписывайтесь пожалуйста)
  Ответить с цитированием
Старый 19.05.2015, 11:34   #4
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Вопрос к знатокам TStringList

Цитата:
Не так ли?

Ты передаёшь указатель, в любом случае "страдать" будет объект класса. Если ты хочешь, чтобы объект класса не тронуло, тогда надо создавать ещё один и копировать переданный в параметрах.
Код:
procedure blabla(var StringList: TStringList);
var
  Temp: TStringList;
begin
  Temp := TStringList.Create;
  Temp.Assign(StringList);
  //Do smth
  Temp.Free;
end;
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Пользователь сказал cпасибо:
NebesaBag (19.05.2015)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Вопрос знатокам UCP CS:S Amir:D Общение и обсуждение Counter-Strike 4 08.04.2012 06:18
[Помогите!] Вопрос к знатокам esanja26 Общение и обсуждение 5 10.02.2012 01:19
Вопрос знатокам romana Боты, скрипты и прочий софт для Lineage 2 9 21.06.2009 18:50

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 05:56.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net