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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2017, 13:50   #1
mavurece
Заблокирован
 
Регистрация: 11.04.2017
Сообщений: 1
По умолчанию Возврат TStringlist из функции

Парни, есть функция возвращающая список дисков в виде строк.
Вроде все работает, вопрос, утечек памяти не будет ? Tstringlist же уничтожать нужно....

Код:
Function FindDisk:TSTringlist;
 var
  i, j: integer;
  buf: array [0..499] of char;
  DrvStr: array [0..9] of char;
  LogDrives: set of 0..25;
begin
result:=tstringlist.Create;

  TRY
  integer(LogDrives) := GetLogicalDrives;
    for i := 0 to 25 do
      if (i in LogDrives) then


  GetLogicalDriveStrings(1000, buf);
    i := 0;
    repeat
      FillChar(DrvStr, SizeOf(DrvStr), #0);
      j := 0;
      repeat
        DrvStr[j] := buf[i];
        inc(j);
        inc(i);
      until
        (buf[i] = #0) or (j > 9);
      inc(i);
      result.Add(drvstr);

    until
      ((buf[i-1] = #0) and (buf[i] = #0)) or (i > 499);
  EXCEPT

  END;
end;

использование
Код:
procedure TForm2.FormCreate(Sender: TObject);
begin
       showmessage(FindDisk.Text);
end;
mavurece вне форума Ответить с цитированием
Старый 23.04.2017, 16:36   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
утечек памяти не будет ? Tstringlist же уничтожать нужно
Надо и будут, если многократно обращаться. Освобождай после вызова функции.
Код:
xList:=FindDisk;
...
xList.Free;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.04.2017, 20:38   #3
xafub@doanart.com
Заблокирован
 
Регистрация: 24.04.2017
Сообщений: 3
По умолчанию

пароль забыл...)
Аватар, спасибо.
Я имел ввиду нужно ли что то дополнительное предпринимать после создания TSTRinglist в самой функции...

в функции есть...
Код:
result:=tstringlist.Create;
значит я ее и уничтожить должен...

Последний раз редактировалось xafub@doanart.com; 24.04.2017 в 20:42.
xafub@doanart.com вне форума Ответить с цитированием
Старый 24.04.2017, 21:07   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
пароль забыл
Для клона пароль запомнил? mavurece в вечный бан, xafub-у красную карточку за забывчивость, угу? )) Хотя вроде и восстановить можно, если мыло помнишь ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 24.04.2017 в 21:09.
Аватар вне форума Ответить с цитированием
Старый 26.04.2017, 12:38   #5
xafub@doanart.com
Заблокирован
 
Регистрация: 24.04.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Для клона пароль запомнил? mavurece в вечный бан, xafub-у красную карточку за забывчивость, угу? )) Хотя вроде и восстановить можно, если мыло помнишь ))
давай договоримся командир... ) не оформляй а...

пасс забыл, восстановить пробовал,
1. приходит запрос на сброс пароля
2. Подтверждаю, сайт отправляет вроде как новый пароль
3. Приходит ссылка на почту (для получения нового пароля)
4. Перехожу по ссылке и меня редиректит на главную страницу форума... (пароль новый указать не дает)

теперь еще и за флуд наверно бан?)

Может по теме уже, закончим...
xafub@doanart.com вне форума Ответить с цитированием
Старый 26.04.2017, 13:03   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Может по теме уже
дык написал же выше. А коль в самой функции создается для передачи в качестве результата - смысл в самой же функции очищать? Передастся указатель на разрушенный объект. По мне хоть и можно так, но лучше процедуре или функции передать параметром уже созданный объект, т.е. его создает и заботится о разрушении вызывающий блок
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.04.2017, 13:14   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Обычно TStringlist в функцию параметром передают, чтоб не было таких вопросов.

В новых версиях Дельфи можно использовать smart pointer'ы, чтоб не париться об этом.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.04.2017, 14:36   #8
xafub@doanart.com
Заблокирован
 
Регистрация: 24.04.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
дык написал же выше. А коль в самой функции создается для передачи в качестве результата - смысл в самой же функции очищать? Передастся указатель на разрушенный объект. По мне хоть и можно так, но лучше процедуре или функции передать параметром уже созданный объект, т.е. его создает и заботится о разрушении вызывающий блок
вариант...спасибо
xafub@doanart.com вне форума Ответить с цитированием
Старый 26.04.2017, 14:46   #9
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 272
По умолчанию

http://forum.codecall.net/topic/6119...s-drives-list/
Filka вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возврат рекурсивной функции DarkHacker Общие вопросы Delphi 3 30.11.2014 20:27
возврат строки из функции Kaela Общие вопросы C/C++ 21 27.05.2012 20:00
Возврат массива из функции max_prorok Помощь студентам 2 06.10.2011 12:39
c++ возврат указателя из функции Neolit1819 Помощь студентам 6 28.03.2011 15:37
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48