Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массив


noob ©   (2004-11-20 22:47:00) 

Как удалить i-тый елемент массива


Shama_n   (2004-11-21 17:46:00) [1]

TStringList и метод Delete[Номер строки] не подходит? :)


begin...end   (2004-11-21 09:54:00) [2]


> noob ©   (20.11.04 22:47)


uses Math;

type
 TMyArray = array of TMyType;

procedure DeleteItem(var Arr: TMyArray; Index: Integer);
begin
 if InRange(Index, Low(Arr), High(Arr)) then
 begin
   MoveMemory(@Arr[Index], @Arr[Index + 1], SizeOf(Arr[Index]) * (Length(Arr) - Index));
   SetLength(Arr, Length(Arr) - 1)
 end
end.


Новичек   (2004-11-21 09:42:00) [3]

Может, так:


procedure DeleleElement(Index: Integer );
procedure AddElement(Index: Integer; ANew: AnsiString );

var
 A: Array of AnsiString;

implementation

procedure DeleleElement(Index: Integer );
var
LastEl: Integer;
begin
  LastEl := High(A);
  if Index <  LastEl then move(A[Index + 1], A[Index],
  (LastEl - Index) * SizeOf(A[Index]));
  SetLength(A, LastEl);
end;

procedure AddElement(Index: integer; ANew: AnsiString);
var
Len: integer;
begin
  Len := Length(A);
  if Index >= Len then Index := Len + 1;
  SetLength(A, Len + 1);
  move( A[Index], A[Index+1],
        (Len-Index) * SizeOf(A[Index]));
  A[Index] := ANew;
end;


SergP   (2004-11-21 08:49:00) [4]

Что-то в последнее время сабжевый вопрос начал многих интересовать, типа как раньше когда-то всех интересовало "как запендюрить иконку туда где часики".  Пора бы сделать ФАК по удалению элемента из диначеского массива.


Defunct   (2004-11-21 04:53:00) [5]

> delete(s,i,1) - по памяти, мож и ошибся...

да не.. F8 там самое то!
нет программы - нет проблем :)


KilkennyCat   (2004-11-21 03:16:00) [6]


> чисел integer (вроде это нужно автору, как я понял).


неа, он там пишет, что стринг...

чтож, ежели стринг рассматривать как массив...

delete(s,i,1) - по памяти, мож и ошибся...


Piter   (2004-11-21 02:18:00) [7]

Ну встроенной функции вроде нету... я написал бы где-то так:

function DeleteElement(ListInt: TBoundArray; Index: integer): boolean;
var
 i: integer;
begin
 if ( Index > High(ListInt) ) or ( Index < 0 ) then
   Result := false
 else
   begin
     for i:=Index to High(ListInt) - 1 do
       ListInt[i] := ListInt[i+1];
     SetLength(ListInt, Length(ListInt) - 1);
     Result := true;
   end;
end;


Это соответственно удаление элемента из динамического массива чисел integer (вроде это нужно автору, как я понял).

С другой стороны код очевиден и странно что самому нельзя догадаться...


Defunct   (2004-11-21 02:05:00) [8]

> to Defunct Задоронова насмотрелся?

Да нет, вопросов начитался.
Если вы знаете как можно иначе "удалить" i-тый элемента массива, то расскажите мне.


KilkennyCat   (2004-11-21 01:39:00) [9]


> Palladin ©   (21.11.04 01:07) [6]


Pascal## ?


Palladin   (2004-11-21 01:07:00) [10]


> [2] YurikGL ©   (21.11.04 00:01)

А это вообще описанию не поддается... какойто Pascal нового поколения, в котором можно объявить индексируемые (индексом неизвестного типа) переменные и удалить элемент массива через тотже индекс неопределенного пола поставив точку и написав четыре буквы free... компилятор сам определит что нужно удалить прокладку...


Palladin   (2004-11-21 01:04:00) [11]

и что? я спрашиваю какой массив а не что в нем содержится...
из статического ты ничего не удалишь, из динамического догадайся сам, нарисуй ситуацию на листочке... в помощь: можешь глянуть справку по Move


noob   (2004-11-21 00:56:00) [12]

to Defunct Задоронова насмотрелся?

... массив типа string


Defunct   (2004-11-21 00:34:00) [13]

> Как удалить i-тый елемент массива

Навестись в Far на файл с расширением .pas, в котором описан ваш массив, и нажать F8 потом enter.


YurikGL   (2004-11-21 00:01:00) [14]

В частном случае, если
mas[i]:array of TEdit
то удалить можно так
mas[i].free


Palladin   (2004-11-20 22:51:00) [15]

какого массива?


Наверх

Титульная страница Поиск, карта сайта Написать письмо