Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизПередача структуры параметром в функцию Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c