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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать индекс при переборе через for in 
:(
    Опции темы
JSinx
Дата 20.1.2008, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Столкнулся с небольшой проблемой.
Перебираю массив с помощью for in, как узнать на каком номере записи я нахожусь?
Код

var
  i : integer;
  myArray : array[1..10] of integer;
begin

for i in myArray do  i := i + 10;



В этом случае можно при каждом переборе увеличивать на единицу другую переменную.
У меня немного посложней ситуация.
Код

type
  tListName = ( marusa, lena, kata )
  tParams = record
    name : string;
    phone : string;
  end;

  tHumList : array[ tListName ] of tParams;

var
  i : tParams;
  myArray : tHumList;

function ReturnIndex( value : string ) :  tListName ;
begin
  for i in myArray do
    if i.name=value then Result :=****(тут должен быть индекс)
    
end


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


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



  Так и i и есть индекс, на записи с индексом I. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ivan219
  Дата 20.1.2008, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

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



Цитата(JSinx @  20.1.2008,  20:05 Найти цитируемый пост)
for i in myArray do  i := i + 10;

А это правильный синтаксис smile 
PM MAIL ICQ   Вверх
mr.Anderson
Дата 20.1.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

Репутация: 3
Всего: 128



ivan219, синтаксис-то нормальный, я только сильно сомневаюсь, что все это пройдет без предупреждений в делфи (идет вмешательство в переменную цикла).

Это сообщение отредактировал(а) mr.Anderson - 20.1.2008, 21:55


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
JSinx
Дата 20.1.2008, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Цитата(Alexeis @ 20.1.2008,  20:14)
1) Так и i и есть индекс, на записи с индексом I.

2) А это правильный синтаксис.


1) Нет, i - это значение

2) Согласен, что к i прибавлять нельзя, но суть то не в этом!!!! Подставьте туда любую другую строчку.

Вот вам рабочий код:

Код

const
  myArray : array[1..5] of integer = (4,5,2,3,1);

var
  i, j : integer;
begin
  j := 0;
  for i in myArray do
  begin
    StringGrid1.Cells[j,0] := IntToStr( i );
    StringGrid1.Cells[j,1] := IntToStr( j );
    inc(j);
  end;


Что мы увидим в стригриде:
Первая строчка будет: 4, 5, 2, 3, 1.
Вторая: 0, 1, 2, 3, 4

PM MAIL   Вверх
ivan219
  Дата 20.1.2008, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

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



Цитата(mr.Anderson @  20.1.2008,  21:53 Найти цитируемый пост)
синтаксис-то нормальный

А вот Delphi7 на это for i in myArray do ругается матом smile 
PM MAIL ICQ   Вверх
THandle
Дата 20.1.2008, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



ivan219, насколько помню цикл for..in..do был введен в язык Object Pascal только в Delphi 2005.
PM   Вверх
JSinx
Дата 20.1.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Цитата(THandle @ 20.1.2008,  22:56)
ivan219, насколько помню цикл for..in..do был введен в язык Object Pascal только в Delphi 2005.

Да, в 2005 тока появилось.
Очень удобная весчь, часто пользуюсь в lua, но без узнавания индекса теряет свою ценность примерно наполовину.

Видимо придется пока делать через заднее место, глядишь, может и ответ получу smile
PM MAIL   Вверх
Snowy
Дата 22.1.2008, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 31
Всего: 484



Сделай не record, а класс.
Прикрути к нему свой enumerator и получишь любой желаемый функционал.
PM MAIL   Вверх
JSinx
Дата 22.1.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Цитата(Snowy @ 22.1.2008,  15:22)
Сделай не record, а класс.
Прикрути к нему свой enumerator и получишь любой желаемый функционал.

Попробую smile
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.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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