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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2021, 16:04   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию В чем проблема с TSrings ?

Вот есть код
Код:
  Procedure spets;
  var
    s1, s2:string[34];
    i:word;
    j:byte;

  begin
      result:=false;
      s1:='';

      j:=length(edit9.Text);
      for i:=1 to j do begin
       s1:=s1+UpCase(edit9.Text[i]);
      end;

      memo2.Lines.Clear;
      DirSearch(memo1.Lines[ind], memo2.Lines);

      For i:=0 to memo2.Lines.Count-1 do begin
       s2:=rasr(memo2.Lines[i], j+3);
       If (s2=s1+'.JPG') or (s2=s1+'.MP4') then begin
        result:=true;

        exit;
       end;
      end;
Код работает

НО! Если заменить Memo2.Lines на TStrings, программа в процессе выполнения начинает выдавать ошибку

Создать и удалить переменную - создавал перед и удалял после. Не помогает
Изображения
Тип файла: png изображение_2021-05-24_160043.png (11.4 Кб, 1 просмотров)
Kronos913 вне форума Ответить с цитированием
Старый 24.05.2021, 16:28   #2
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Чтобы result не сбивало с толку - это процедура внутри функции
Kronos913 вне форума Ответить с цитированием
Старый 24.05.2021, 17:34   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1. перед использованием ОБЪЕКТЫ надо создавать и СОХРАНЯТЬ полученный объект в переменной.
2. TStrings абстрактный класс. и создавать надо его НАСЛЕДНИКА ( как правило TStringList).

Код:
s:=TStringList.Create;
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 24.05.2021, 18:07   #4
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

SL.Create я прописывал. Как и SL.Free

К слову, в другой части программы у меня есть глобальная переменная TStrings;
И с ней все нормально. Загрузил туда аналогичный скан папки - и работаю с ним

А тут возникают проблемы
Kronos913 вне форума Ответить с цитированием
Старый 24.05.2021, 18:10   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
SL.Create я прописывал. Как и SL.Free
а надо
Код:
sl:=TStringList.Create;

Цитата:
в другой части программы у меня есть глобальная переменная TStrings;
и где-то есть код ее инициализации.
Код:
??? :=Memo....Lines;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.05.2021 в 18:15.
evg_m на форуме Ответить с цитированием
Старый 24.05.2021, 21:13   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Создание объектов вроде обсудили. А точно ли нужен UpCase с циклом?
Код:
  begin
      result := false;
      s1 := AnsiUpperCase(edit9.Text);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 24.05.2021, 22:42   #7
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Супер! Спасибо
Не знал, что можно в одну процедуру это сделать
Kronos913 вне форума Ответить с цитированием
Старый 25.05.2021, 02:17   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Создание объектов вроде обсудили
Сумлеваюсь я однако, что Kronos913 понял все свои ошибки в этом плане. Экстраполируя до полного абсурда ТС может дойти до прямого использования класса TObject. Он ведь тоже передается и очень часто как параметр функции/процедуры.
northener вне форума Ответить с цитированием
Старый 25.05.2021, 12:55   #9
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Сумлеваюсь я однако, что Kronos913 понял все свои ошибки в этом плане. Экстраполируя до полного абсурда ТС может дойти до прямого использования класса TObject. Он ведь тоже передается и очень часто как параметр функции/процедуры.
В данном случае, если честно, я не совсем понял разницу TStrings и TStringList...

Нас в универе языкам не учили... Так что в плане языка я самоучка
Kronos913 вне форума Ответить с цитированием
Старый 25.05.2021, 13:07   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
В данном случае, если честно, я не совсем понял разницу TStrings и TStringList...
TStrings абстрактный класс.
многие функции только намечены abstract(заявлены их имена и типы параметров)

их использование приведет к EAbstarctError

TStringList
все ранее намеченные функции (в TStrings) получили реальное воплощение override
и теперь их можно смело использовать.

Цитата:
Так что в плане языка я самоучка
читать про виртуальные, абстрактные методы
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ActionScript В чем проблема? while(if(i), Flash проблема со скобками. artscorp Общие вопросы Web 4 09.04.2013 23:41
в чем проблема??? nursultan5 Помощь студентам 4 04.06.2012 00:18
Как передать TSrings в String??? newprog12 Общие вопросы Delphi 4 08.01.2010 23:24
в чем проблема? Exploit Помощь студентам 10 26.01.2009 09:39
В чем проблема? Sirazh Microsoft Office Excel 4 25.09.2008 21:32