![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день,
у меня такая проблема есть программа написанная по принципам ооп(структура динамическая очередь упорядоченных массивов) в ней есть 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
|
||||
|
||||
|
Код:
NewsArray |
|
#3
|
|||
|
|||
|
NewsArray:string; массив строк по сути
Код:
const MaxNews = 10; type MyArray = array [1..MaxNews] of TNews; закладываются подозрения что преподаватель явно что то напутал,так как везде удаление по индексу (нашел удаление по названию только в списке TStrList) |
|
#4
|
||||
|
||||
|
Нет ли смысла перестроить NewsArray в TStringList.
И пользоваться адекватным удалением. Если TNews это стринг. Или использовать <TNews>List generic collection. |
|
#5
|
|||
|
|||
|
Если перестрою NewsArray в TStringList это уже будет список.
Удаление по названию в списке я понимаю(даже нашел примеры) ,но как это реализовать в массиве.... |
|
#6
|
||||
|
||||
|
Цитата:
Отрывок из 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; // тут он и используется
... |