Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление элементов в массив, Удаление элементов массива 
:(
    Опции темы
Akella
Дата 31.1.2005, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Странно, но в DRKB такого не нашел, а именно как добавить (удалить) элемент в мессив.

arDate:Array of Cardinal - глобально

1. Как добавить новое значение в массив?
2. Как удалить значение из массива?

Переделал пример из DW6, но нифига не получает, а сам с массивами почти не работал
Код

procedure delElem( var A:Array of Cardinal; Index:Cardinal);
var Last : Cardinal;
begin
  Last:= high( A );
  if Index <  Last then move( A[Index+1], A[ Index ],
      (Last-Index) * sizeof( A[Index] )  );
  SetLength(A,Last);
end;

procedure addElem( var A: Array of Cardinal; Index: integer;ANew:Cardinal);
var Len : Cardinal;
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;


Добавлено @ 17:22
просто хочу подставлять сюда данные (вместо [1,8])
Код

MonthCalendar1.BoldDays([1,8], MonthBoldInfo);

PM MAIL   Вверх
<Spawn>
Дата 31.1.2005, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



dsergey Зачем изобратеть велосипед когда есть класс TList? Вот пример:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
 Value: PCardinal;
begin
 with TList.Create do
 try
   //Добавляем одно значение
   GetMem(Value, SizeOf(Cardinal));
   Value^ := 100;
   Add(Value);
   //Второе
   GetMem(Value, SizeOf(Cardinal));
   Value^ := 200;
   Add(Value);
   //Смортим значение первого
   ShowMessage(IntToStr(PCardinal(Items[0])^));
   //Удаляем все
   while Count <> 0 do
     FreeMem(Extract(Items[Count - 1]), SizeOf(Cardinal));
 finally
   Free;
 end;
end;


Вообще для таких случаев я пишу себе наследника TList, работающего с нужными типами.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Akella
Дата 31.1.2005, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



читай, что добавлено
PM MAIL   Вверх
z-END
Дата 31.1.2005, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Посмотри мой код в этой теме


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Akella
Дата 31.1.2005, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Код

SetLength (BDates, Length(BDates) + 1);
BDates[ length(BDates)-1] := DayOf(CDate);

оно?
Добавлено @ 17:44
Нужно, мне кажется написать что-то путевое, и попросить модераторов запихнуть в DRKB.
Добавлено @ 17:46
Странно, в FAQ`е есть удаление элемента массива, а почему бы не добавить "Добавление элемента в массив"
PM MAIL   Вверх
z-END
Дата 31.1.2005, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Целиком код вставь в свой проект и посмотри на результат...
... в итоге после нажатия кнопки ("ОК") которая изображена у тебя на картинке
в Dates (объяви ее глобальной Dates: TStringList) будет содержаться список всех дат, которые выбраны.


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Bes
Дата 1.2.2005, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



Тут где-то Петрович рассказывал как работать с массивами.
Смысл в том, что сначала нужно боъявить новый тип равный массиву, можно даже динамическому, а потом передавать как параметр уже этот тип. Т.е.
Type TMyARR = array of array of Cardinal;

Function GetAr(Var Arr1:TMyARR):TMyARR;
/
/
/
/
/

PM MAIL   Вверх
Akella
Дата 1.2.2005, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Еще раз smile
Цитата(dsergey @ 31.1.2005, 17:42)
Странно, в FAQ`е есть удаление элемента массива, а почему бы не добавить "Добавление элемента в массив"


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1153 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.