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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с массивами! Необходимо написать прогу! :-) 
:(
    Опции темы
Sniper
Дата 24.10.2003, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Значит так:
Прога, которую я пишу, должна делать много операций с массивами...

Итак: есть Listbox и кнопка. Жмём кнопку...
и к элементу в массиве присваивается строчка в Listbox'e
Также есть ещё кнопка, которая позволяет удалять элемент из ListBox'a и очищать элемент массива....

Далее: есть ещё три поля ввода (TEdit) Когда нажимаем на любую строчку в Listbox инфа из элемента массива должна распихиваться по этим полям... эти поля можно и нужно редактировать...., а потом записать обратно...

И в конце концов вывести содержимое массива в memo....

Вот такая господа-товарищи задача! :-)
Помогите чем можете!


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Vit
Дата 24.10.2003, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

Репутация: 48
Всего: 207



Так в чём проблема? Самому лень код писать что-ли? В чём трудность-то? Напиши конкретно что именно не получается и что ты не знаешь как реализовать...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Sniper
Дата 24.10.2003, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



>>Самому лень код писать что-ли?
Так и знал, что вы сразуже захотите мне помочь! %-)
Нет, мне было лень в форум писать..... :-) Я вообще редко чего в форуме спрашиваю! %-)

OK! Значит так!

type
TVector = record
X, Y, Z: single;
end;

var
i: integer;

items : array of record
item_pos : TVector;
item_index : integer;
end;

procedure TForm1.addbuttonClick(Sender: TObject);
begin
Form1.ListBox1.Items[ListBox1.ItemIndex] := 'item' + inttostr(items[i].item_index);

Form1.Edit2.Text := Floattostr(items[i].item_pos.X);
Form1.Edit3.Text := Floattostr(items[i].item_pos.Y);
Form1.Edit4.Text := Floattostr(items[i].item_pos.Z);

inc(items[i].item_index);
end;

procedure TForm1.Writein2arrayButtonClick(Sender: TObject);
begin
items[i].item_pos.X := strtoFloat(Form1.Edit2.Text);
items[i].item_pos.Y := strtoFloat(Form1.Edit3.Text);
items[i].item_pos.Z := strtoFloat(Form1.Edit4.Text);
end;

Я не понимаю как в таком случае сделать цикл по всем элементам!?


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Vit
Дата 24.10.2003, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

Репутация: 48
Всего: 207



По видимому тебе нужна эта информация:

http://forum.vingrad.ru/index.php?act=ST&f=32&t=863




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dvs
Дата 25.10.2003, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Владимир Драпалюк
**


Профиль
Группа: Участник Клуба
Сообщений: 660
Регистрация: 25.8.2003
Где: Воронеж->Москв а

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



>>Я не понимаю как в таком случае сделать цикл по всем элементам!?
Цикл по всем элементам чего? Items-а?

Да, и что такое Items[i].Item_index? Если ты так пытаешься считать кол-во записей, то у тебя ничго не получится, потому что у тебя для каждого элемента массива Items с индексом i будет своя запись item_index.

И если это возможно, то напиши, пожайлуста, исходный текст задачи, которая перед тобой стоит, без конкретизации реализации, т.е саму проблему, для чего нужна программа, потому что я просто не понял в чем вопрос...


--------------------
Любите друг друга!
PM MAIL WWW ICQ   Вверх
Sniper
Дата 25.10.2003, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Vit Спасибо за инфу!
С одной маленькой частью своей задачи я справился! %-)

Теперь вопрос следующий:

Есть массив:
Код

type
TVector = record
X, Y, Z: single;
end;

var
 item_pos : array[0..7] of Tvector;
 item_i : integer;


Записываю связываю список в ListBox'e c массивом:
Код

procedure TForm1.addbuttonClick(Sender: TObject);
begin
For item_i:= 0 to 7 do
begin
 item_pos [item_i] := GetVector(0,2+i,-20);
 Form1.ListBox1.Items[ListBox1.ItemIndex] := 'item' + inttostr(item_i);
end;
end;

Вообще мне нужно что бы при каждом нажатии на кнопку происходило добавление элемента и в массив и в ListBox, а не сразу всех! Как это сделать я представляю что так:

Код

procedure TForm1.addbuttonClick(Sender: TObject);
begin
 item_pos[item_i] := GetVector(0,2+i,-20);
 Form1.ListBox1.Items[ListBox1.ItemIndex] := 'item' + inttostr(item_i);
 item_i := item_i + 1;
end;

Проверил! Вродебы все работает! :-)

Далее задача следующая:
Если я кликаю на элементе в Listbox'е то инфа из массива соответствующая элементу в ListBox'е заносится в эти три Edit'a, отредактировав эту инфу, её нужно снова поместить в массив....
Я чувствую что это должно выглядет как-то так:

item_pos[item_i].X := strtoFloat(Form1.Edit2.Text);
item_pos[item_i].Y := strtoFloat(Form1.Edit3.Text);
item_pos[item_i].Z := strtoFloat(Form1.Edit4.Text);

Но как тогда быть ещё с ListBox'ом!??

Это сообщение отредактировал(а) Sniper - 25.10.2003, 08:55


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Sniper
Дата 25.10.2003, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Помогите мне а!! :-)


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
&-ray
Дата 25.10.2003, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

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



Что-то не понял, что тебе надо изменить в listbox'е, если туда ты только записываешь в строки числа 1,2,3...
Твой код сложно понять, переименуй переменные, а то везде одни item'ы,
в глазах пестрит wink.gif
ЗЫ Если проблема в том, что не знаешь, куда в массиве записать инфу из едитов, то вместо item_i в последнем примере меняй на индекс текущей строки в listbox'е


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
Sniper
Дата 25.10.2003, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



&-ray
>>ЗЫ Если проблема в том, что не знаешь, куда в массиве записать инфу из едитов, то вместо item_i в >>последнем примере меняй на индекс текущей строки в listbox'е
Спасибо попробую! :-)


Вот пример интерфейса : http://www.ogldelphi.km.ru/interface.jpg

Мне нужно: если я кликаю на listbox'e то в трёх нижних Edit'ах (так как массив уменя типа tVector, а в типе 3 координаты) должны появиться значения каждой переменной....
это надо как-то в цикле проверять...
так же точно и запись надо както в цикле по всем элементам делать! А как? :-)


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
&-ray
Дата 26.10.2003, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

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



Хм...
Объясню, как я понял.
У тебя массив из элементов типа TVector, каждый хранит 3 координаты.
Тебе надо добавить новый элемент в массив, с координатами, записанными в едитах.
Для этого добавляй новый элемент в массив (для динамического массива):
Код

SetLength(MyArray,Length(MyArray)+1);

Далее записываешь в конец свои данные:
Код

x:=Length(MyArraY);
MyArray[x-1]:=...
ListBox1.items.add('item '+inttostr(x-1));

Если у тебя статический массив, то тогда надо ввести глобальную переменную, показывающую, сколько элементов у тебя уже записано и добавляй так:
Код

MyArray[x]:=...
ListBox1.items.add('item '+inttostr(x));
inc(x);

При клике на Listbox'е заполняешь едиты:
Код

edit1.text:=inttostr(MyArray[listbox1.ItemIndex].X);
edit2.text:=inttostr(MyArray[listbox1.ItemIndex].Y);
edit3.text:=inttostr(MyArray[listbox1.ItemIndex].Z);

После редактирования сохраняешь в массиве:
Код

MyArray[listbox1.ItemIndex].X:=strtoint(edit1.text);
MyArray[listbox1.ItemIndex].Y):=strtoint(edit2.text);
MyArray[listbox1.ItemIndex].Z):=strtoint(edit3.text);

Только не понял, зачем тебе циклы confused.gif


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
Sniper
Дата 26.10.2003, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



&-ray
И ещё у меня элементы массива это как ты понял координаты!
Я написал процедурку! :

procedure object(item_i : integer);
begin
gltranslated(MyArray.X,MyArray.Y,MyArray.Z);
glBegin(GL_POINTS);
glVertex3f(MyArray.X,MyArray.Y,MyArray.Z);// эти "координаты" я от балды написал! Они как то по другому будут выглядеть!
glEnd;
end;
(для справки это OpenGL :-))

И мне нужно эти коодвинаты ВСЕ теперь вывести! Как это сделать?? Я бы хотел узнать, но похоже это делается с помощью цикла :-)

И ещё: если удалять объект из списка, то как удалить из массива?

Это сообщение отредактировал(а) Sniper - 26.10.2003, 14:37


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
[ss]3L33T@
Дата 26.10.2003, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



БАЗЫ ДАННЫХ И ВСЁ...
--------------------
Понастоящему добрый человек всегда простит и забудет вам ваше зло, но он никогда не простит и не забудет вашего добра[ss]3L33T@
PM MAIL WWW ICQ   Вверх
Sniper
Дата 26.10.2003, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



[ss]3L33T@
шутник! :-)


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
&-ray
Дата 26.10.2003, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

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



Цитата
И ещё: если удалять объект из списка, то как удалить из массива?

Если используешь статический массив, то никак, просто прими, за "нулевое" некоторое значение и подставь его в нужном элементе:
Код

MyArray[n].X:=...
MyArray[n].Y:=...
MyArray[n].Z:=...

Но проще использовать динамический массив. Тогда удаление элемента из массива заключается в смещении всех его элементов:
Код

for x=n to Length(MyArray)-1 do MyArray[x]:=MyArray[x+1];
SetLength(MyArray,Length(MyArray)-1);

А про OpenGL я не знаю, не работаю с ним.



--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
Sniper
Дата 26.10.2003, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



&-ray
Представь что это не процедуры OpenGL, а обычные процедуры(они от обычных кстати ничем не отличаются %-))
которые имеют следующий вид:
Я для тебя преобразовал её :-)
Код

procedure object;
begin
 myproc(x,y,z : single);//где x,y,z : это наши элементы массива
 Begin
   myproc1(x,y,z: single);
 end;
end;

утрированно конечно, но что бы ты не боялся! %-)

Мне нужно в эту процедуру (object;) из каждого элемента массива подставить значения! Как?


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
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.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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