Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

подстановка значения в созданный тип   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
2-1271431396
Nikru
2010-04-16 19:23
2010.08.27
WebBrowser


2-1271740246
serhiyiv
2010-04-20 09:10
2010.08.27
Прочитать текст с екрана


2-1273589073
Евгений Р.
2010-05-11 18:44
2010.08.27
Работа с tTollButton


3-1241758934
mefodiy
2009-05-08 09:02
2010.08.27
ADO-запрос в Native БД Navision 3.7


11-1216669322
Сашик
2008-07-21 23:42
2010.08.27
KOL: нужно ли освобождать память после VarArrayCreate...