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

Вниз

Передача структуры параметром в функцию   Найти похожие ветки 

 
guest_2004234   (2004-03-24 11:44) [0]

Привет All.
Возник вот какой вопрос, нужно передать параметром функции название структуры и её поле(по номеру - чтобы можно было в цикле заполнять поля)
"поля у структуры разных типов

Ну примерно вот так:
function Filter(NameOfStruct: ????; NumberOfField: ????):string;

С именем структуры понятно - можно сделать что-то типа
TStructs = (TSruct1, TSruct2 ... TStructN) и передавать её в качестве параметра. Но как програмно определить её поле - загадка.

Может кто что подскажет.


 
Тимохов ©   (2004-03-24 11:47) [1]

структура то какая?


 
Zergling ©   (2004-03-24 11:51) [2]

А я вобще не вьехал в суть вопроса
Можно разжевать?


 
Smithson ©   (2004-03-24 11:53) [3]


type
 TStruct = record (или class)
   ...
   ...
 end;

 Function Filter (NameOfStruct: TStruct)


 
Курдль ©   (2004-03-24 11:56) [4]

Не т понятия "НАЗВАНИЕ СТРУКТУРЫ". Это для Вас оно название, а для программы - адрес в памяти.
А что есть "СТРУКТУРА" для принимающей ф-ции? Указатель просто-напросто. И какие могут быть проблемы? Задумайтесь над сутью вещей! Ведь нельзя всю жизнь прожить с уверенностью, что ветер дует оттого, что деревья качаются!


 
guest_2004234   (2004-03-24 12:08) [5]

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

Для принимающей функции NameOfStruct - указатель на структуру, которую использовать, а NumberOfField - порядковый номер поля.


 
Романов Р.В. ©   (2004-03-24 12:10) [6]

А просто поле нельзя передать?


 
Digitman ©   (2004-03-24 12:17) [7]

откажись от структур в пользу классов - наследников TPersistent

RTTI тебе поможет


 
guest_2004234   (2004-03-24 12:20) [8]

Например

PStruct2 = ^TSruct2
TSruct1 = record
 field1: integer;
 field2: string;
end;

PStruct2 = ^TSruct2
TSruct2 = record
 field1: string;
 field2: double;
end;

function Filter(NameOfStruct: pointer; NumberOfField: byte):string
begin
//здесь что-то типа из NameOfStruct возвращать поле номер NumberOfField
end;

Procedure BeginF();
var
 STRUCT1 : PSTruct1
 STruct2 : PStruct2
 N1: Byte
begin
 N1:=1;
caption := Filter(Struct1, N1); //вернёт Struct1^.Field2
 N1:=0;
caption := Filter(Struct2, N1); //вернёт Struct2^.Field1


 
Курдль ©   (2004-03-24 12:22) [9]


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


А нельзя свести "набор структур", например, к массиву структур?


 
Романов Р.В. ©   (2004-03-24 12:33) [10]

Какая то неправильная организация хранения данных :(



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.06 c
7-1080470187
VitGun
2004-03-28 14:36
2004.04.11
Перехват обращения к FDD, LPT,USB


6-1079623700
suschek
2004-03-18 18:28
2004.04.11
Звук в терминальной сесии


14-1079526339
nikitos
2004-03-17 15:25
2004.04.11
Как сделать форум?


14-1082017092
Empleado
2004-04-15 12:18
2004.04.11
nostalgie


1-1082476423
ASvencim
2004-04-20 19:53
2004.04.11
Проблема с картинкой рабочего стола