Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизподстановка значения в созданный тип Найти похожие ветки
← →
dixa © (2010-04-13 22:35) [0]Здравствуйте уважаемые! Есть вопрос, который я не могу решить, замучился уже искать, если поможете буду очень рад:
Пользователь выбирает значение(предположим из listbox) и дальше мне нужно определить в каком значении это искать:
MyRec = record
Name: string[100];
property1: integer;
property2: integer;
property3: integer;
end;
var
kurs: MyRec;
Забили какими-то значениями(kurs.name:=бла бла бла,kurs.property1:=10, kurs.property2:=25, kurs.property3:=55) затем запустили прогу, пользователь выбрал значение например "property1"
Теперь мне надо достать значение из listbox :
Listbox1.Items[Listbox1.ItemIndex]
Достаю, теперь мне надо выдать значение предположим kurs.property1
То есть мне надо выдернуть значение "10".
Как это сделать?...
← →
И. Павел © (2010-04-13 23:02) [1]Можно сделать массив: property:array [0..x] of variant. Нужный элемент выбирать по ItemIndex.
← →
dixa © (2010-04-13 23:31) [2]Если можно поподробней, я не до конца понял как тут поможет массив типа variant...
хочется чтобы было что-то вроде:
n:=kurs.Listbox1.Items[Listbox1.ItemIndex];
но он так работать не хочет собака, ругается на ошибку...
← →
И. Павел © (2010-04-13 23:38) [3]MyRec = record
property:array [0..x] of variant;
end;
...
n:=kurs.property[Listbox1.ItemIndex];
← →
Германн © (2010-04-14 01:00) [4]
> И. Павел © (13.04.10 23:38) [3]
Какой тогда смысл в записи?
← →
Германн © (2010-04-14 01:02) [5]Можно конечно и извратиться, но имхо чем табличное представление данных не устроило?
← →
Демо © (2010-04-14 01:46) [6]
> Теперь мне надо достать значение из listbox :Listbox1.Items[Listbox1.
> ItemIndex]Достаю,
Что достаёшь-то?
ListBox.Items[n] - это строка.
← →
Германн © (2010-04-14 01:51) [7]
> Что достаёшь-то?
> ListBox.Items[n] - это строка.
>
Ага. Но и "property1: integer;" тоже строка.
Только эти строки находятся в разных пространствах. :)
← →
Dennis I. Komarov © (2010-04-14 08:54) [8]ИМХО "X,Y,Z"
← →
Leonid Troyanovsky © (2010-04-14 09:26) [9]
> dixa © (13.04.10 22:35)
> Достаю, теперь мне надо выдать значение предположим kurs.
> property1
type
TMyRec = record
Name: string[100];
property1: Longint;
property2: Longint;
property3: Longint;
end;
const
Map: array [0..2] of TIdentMapEntry = (
(Value: 0; Name: "Property1"),
(Value: 1; Name: "Property2"),
(Value: 2; Name: "Property3"));
function GetValByName(const rec: TMyRec; const PropName: string): Longint;
var
pVal: PLongint;
ofs: Longint;
begin
if not IdentToInt(PropName, ofs, Map) then
raise Exception.Create("Invalid property name");
pVal := @rec.property1;
Inc(pVal, ofs);
Result := pVal^;
end;
var
myrec : TMyRec;
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
with Sender as TListBox do
ShowMessage(IntToStr(GetValByName(myrec, Items[ItemIndex])));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with myrec do
begin
Name := "name";
property1 := 1;
property2 := 2;
property3 := 3;
end;
end;
Но, во-ще-то, в подобных случаях надо объявлять
properties: array [0..2] of Longint
--
Regards, LVT.
← →
Плохиш © (2010-04-14 10:47) [10]Обучение программированию на форуме с нуля.
PS. Предлагаю переименовать "начинающим" в "делфи за 21 секунду для полных идиотов".
← →
dixa © (2010-04-15 20:25) [11]Спасибо большое за оперативность, инфа помогла)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.1 c