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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2014, 19:51   #11
WhiskasTM
Подтвердите свой е-майл
 
Регистрация: 11.04.2012
Сообщений: 85
По умолчанию

>>Как из нее удалить...
Из этой типа записи удалить элемент в "где-то там"? Нужно делать событие OnDelete. Если просто список этих записей и нужно удалить одну из них, то эмбаркадеро делает приблизительно так:
Код:
type
  TSimpleRec = record
      _1: string;
      _2: string;
      _3: string;
      ImageIndex: integer;
  end;

  TSimpleRecList = class
    FList   : array of TSimpleRec;
    FCount  : Integer;
    FCapacity : Integer;
  public
    procedure Delete(const Index:Integer);
  end;

procedure TSimpleRecList.Delete(const Index:Integer);
begin
Dec(FCount);
Finalize(FList[Index]);
if Index<FCount then
begin
  Move(FList[Index+1],FList[Index],(FCount-Index)*SizeOf(TSimpleRec));
  PPointer(@FList[FCount]._1)^ := nil;
  PPointer(@FList[FCount]._2)^ := nil;
  PPointer(@FList[FCount]._3)^ := nil;
end;
end;
WhiskasTM вне форума Ответить с цитированием
Старый 28.12.2014, 20:04   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Finalize(FList[Index]);
О_о
Цитата:
Move(FList[Index+1],FList[Index],(FCount-Index)*SizeOf(TSimpleRec));
PPointer(@FList[FCount]._1)^ := nil;
PPointer(@FList[FCount]._2)^ := nil;
PPointer(@FList[FCount]._3)^ := nil;
о_О

Спорить конечно не стану, но я бы так не поступал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.12.2014, 20:32   #13
WhiskasTM
Подтвердите свой е-майл
 
Регистрация: 11.04.2012
Сообщений: 85
По умолчанию

А что не так? TStringList же юзаем. И другие списки. Там идентично.
WhiskasTM вне форума Ответить с цитированием
Старый 28.12.2014, 21:02   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не не, все нормуль.
Продолжай. Я за попкорном отлучусь ненадолго...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.12.2014, 21:13   #15
WhiskasTM
Подтвердите свой е-майл
 
Регистрация: 11.04.2012
Сообщений: 85
По умолчанию

Мне с сахаром. Что, посмотрел исходники и схватился за глову ибо как у тебя миллиард строк кода написаны не в том же ключе и придется теперь все переписывать? Я помогу: http://dn.embarcadero.com/article/33423 Но там реально фигня, поганый setlength.
WhiskasTM вне форума Ответить с цитированием
Старый 28.12.2014, 21:25   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что, посмотрел исходники и схватился за глову ибо как у тебя миллиард строк кода написаны не в том же ключе и придется теперь все переписывать?
Что ты? )))
Цитата:
Я помогу
Благодарю, не требуется. Чинить то нечего...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.12.2014, 21:41   #17
WhiskasTM
Подтвердите свой е-майл
 
Регистрация: 11.04.2012
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что ты? )))
Не нужно скромничать, сколько строк уже? Можещь создать тему во фрилансе, посмотрим.
WhiskasTM вне форума Ответить с цитированием
Старый 28.12.2014, 21:59   #18
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Stilet Как флудится? Или ты мне возразишь, что твой последний пост ну вообще не в тему? Давай, возрази.
WinCoder вне форума Ответить с цитированием
Старый 28.12.2014, 22:20   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не нужно скромничать, сколько строк уже?
Ой, да не считал как-то... Вообще их кол-во уменьшается с каждым разом )
Цитата:
Или ты мне возразишь, что твой последний пост ну вообще не в тему? Давай, возрази.
Ой все все. Умолкаю ) Действительно нехорошо комментировать сериалы. Давайте еще сезончик, не терпится узнать развязку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.12.2014, 22:52   #20
WhiskasTM
Подтвердите свой е-майл
 
Регистрация: 11.04.2012
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ой, да не считал как-то... Вообще их кол-во уменьшается с каждым разом )
0 строк кода было в исходнике, уменьшили ещё на одну - 4294967296 строк кода стало в исходнике.

Развязку я жду, когда Ваше превосходительство соизволит пояснить страхыужас почти оффициального кода удаления элементов? В частности Вам надлежит: 1) пояснить левоглазое удивление на Finalize 2) пояснить правоглазое удивление на PPointer(@)^ := nil. Всего наилучшего, "КНМСК" (комитет ненаписавших миллиард строк кода).
WhiskasTM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 4 05.07.2012 20:27
OwnerDraw ListView with Checkboxes t2skler Общие вопросы C/C++ 0 05.06.2012 19:32
ListView как узнать последнюю строку? Кольша Мультимедиа в Delphi 10 22.08.2011 17:02
Удалить пустую строку из ListView Shouldercannon Общие вопросы Delphi 2 28.04.2010 16:02
как работать с новыми CheckBox в ListView в режиме vsReport cybopob90 Компоненты Delphi 2 24.03.2009 13:02