Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1270050340
Delphist2
2010-03-31 19:45
2010.08.27
вопрос по ADO


15-1270812348
dars73
2010-04-09 15:25
2010.08.27
Как настроить локализацию


15-1275337563
Tim
2010-06-01 00:26
2010.08.27
Помощь с переводом


15-1265562991
Stranger1308
2010-02-07 20:16
2010.08.27
Импорт библиотеки


6-1218021112
StranNik
2008-08-06 15:11
2010.08.27
Вопрос по IdHTTPProxyServer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский