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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 15:28   #1
Dima2011
Новичок
Джуниор
 
Регистрация: 09.05.2011
Сообщений: 2
По умолчанию Копирование массивов записей

Добрый день. Помогите с проблемой.
есть 2 массива SP и SPALL записей типа
Код:
type
  TSportsmen=record
    name, surname, weight, city, age, razryad, weightcat,mesto,id_sportsmen : string;
    number,k,k2:integer;
  end;
При соблюдении определенного условия, я копирую элементы из одного массива в другой следующим способом:
Код:
procedure TForm4.Button3Click(Sender: TObject);
var
  i,j:integer;
begin
setlength(form5.SP,0);
for I := 0 to high(FORM5.SPALL) do
  BEGIN
    if FORM5.SPALL[i].weightcat=form4.ComboBox3.Text then
      begin
        Setlength(FORM5.SP,length(FORM5.SP)+1);
        FORM5.SP[i]:=FORM5.SPALL[i];
      end;
  END;
затем вывожу:
Код:
for I := 0 to high(form5.SP) do
  begin
      form5.memo1.lines.add(form5.SP[i].name);
  end;
в результате в мемо выводятся пустые строки, колличество которых равно размеру массива, который должен был быть получен.

но если выводить в том же цикле, когда я произвожу запись в новый массив, то все выводится правильно.

то есть, вроде массив копируется, но по завершению цикла в нем остаются пустые строки.

пробовал создавать массив другого типа, копировать каждую запись по отдельности, типа sp[i].name:=SPALL[i].name
ничего не помогает....
ПОМОГИТЕ ПЛИИИЗ



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.05.2011 в 16:43.
Dima2011 вне форума Ответить с цитированием
Старый 09.05.2011, 16:47   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ошибка вот тут:
Код:
FORM5.SP[i]:=FORM5.SPALL[i];
кто Вам сказал, что в новом массиве эта запись будет такая же по счёту (иметь такой же индекс), как и в исходном массиве?!?!

попробуйте так, например:
Код:
    if FORM5.SPALL[i].weightcat=form4.ComboBox3.Text then
      begin
        Setlength(FORM5.SP,length(FORM5.SP)+1);
        FORM5.SP[length(FORM5.SP)]:=FORM5.SPALL[i];
      end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.05.2011, 17:17   #3
Dima2011
Новичок
Джуниор
 
Регистрация: 09.05.2011
Сообщений: 2
По умолчанию

Вы совершенно правы))) я уже нашел эту ошибку) тупанул что-то) спасибо БОЛЬШОЕ)
Dima2011 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование массивов ATAMAN200 Общие вопросы C/C++ 11 22.12.2018 16:27
Копирование записей из одной таблицы в другую rockedit БД в Delphi 4 10.12.2009 21:39
Массивы записей Mr.Been Фриланс 4 24.05.2009 11:59
Копирование записей между таблицами DBF ИВэТэшка Помощь студентам 4 22.03.2009 10:43
Копирование записей из одной DBF таблицы в другую ИВэТэшка БД в Delphi 0 20.03.2009 22:37