Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.03.2013, 18:10
Igor22 Igor22 вне форума
Прохожий
 
Регистрация: 28.03.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Удаление из массива по названию элемента

Добрый день,
у меня такая проблема есть программа написанная по принципам ооп(структура динамическая очередь упорядоченных массивов) в ней есть 3 класса(1 "стринговый" класс с 2 свойствами,2 класс на базе массива с 1св. и 3 на базе очереди тоже с 1 свт.)- собственно сама проблема:не совсем понимаю как правильно реализовать поиск и удаление элемента по названию из массива (не по индексу,название естественно string'вое)

Вот проблемный кусок кода(если надо могу выложить весь код класса массива)
Код:
function TSection.FindNews(_NewsName: string):string;
var
 i:byte;
begin
  for i:=1 to GetCount do
    if NewsArray[i].GetTitleName = _NewsName Then
    begin
      Result :=i;
      Exit;
    end;
  Result := 0;
end;


function TSection.DeleteNews(_NewsName:string): boolean;    
var
  i,tmp: Byte;
begin
  Result := False;
  if count <> 0 then
  begin
    tmp := FindNews(_NewsName:string);
    if tmp <> 0 then 
    begin    
      for i:=tmp to Count-1 do NewsArray[i] := NewsArray[i+1];
      NewsArray[Count] := nil;
      Dec(Count);     
      Result := True;
    end;
  end;
 end;
Ответить с цитированием
  #2  
Старый 28.03.2013, 18:13
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Код:
NewsArray 
какого типа?
Ответить с цитированием
  #3  
Старый 28.03.2013, 20:36
Igor22 Igor22 вне форума
Прохожий
 
Регистрация: 28.03.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

NewsArray:string; массив строк по сути
Код:
const
  MaxNews = 10;

type
  MyArray = array [1..MaxNews] of TNews;


закладываются подозрения что преподаватель явно что то напутал,так как везде удаление по индексу (нашел удаление по названию только в списке TStrList)
Ответить с цитированием
  #4  
Старый 28.03.2013, 20:51
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Нет ли смысла перестроить NewsArray в TStringList.

И пользоваться адекватным удалением. Если TNews это стринг.
Или использовать <TNews>List generic collection.
Ответить с цитированием
  #5  
Старый 28.03.2013, 21:38
Igor22 Igor22 вне форума
Прохожий
 
Регистрация: 28.03.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Если перестрою NewsArray в TStringList это уже будет список.
Удаление по названию в списке я понимаю(даже нашел примеры) ,но как это реализовать в массиве....
Ответить с цитированием
  #6  
Старый 28.03.2013, 22:00
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Если перестрою NewsArray в TStringList это уже будет список.
Когда-то копал всякие List'ы делфовские. Ни разу они не списки. Обычные динамические массивы.
Отрывок из Classes.pas:
Код:
...
  TStringItem = record
    FString: string;
    FObject: TObject;
  end;

  PStringItemList = ^TStringItemList;
  TStringItemList = array of TStringItem; // Обычный массив
  TStringListSortCompare = function(List: TStringList; Index1, Index2: Integer): Integer;

  TStringList = class(TStrings)
  private
    FList: TStringItemList; // тут он и используется
...
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025