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

Вниз

Типы   Найти похожие ветки 

 
webpauk   (2004-05-04 16:45) [0]

ув. господа!
надо созд функцию типа:

MyFunc(alCenter, 120, ([stBold, "Пример1"], [stNone, "Пример2"], [stBold, "Пример3"]));

мучаюсь и не знаю к какому типу отнести структуру
([stBold, "Пример1"], [stNone, "Пример2"], [stBold, "Пример3"])

может кто подскажет?!


 
webpauk   (2004-05-04 16:46) [1]

явно определённый массив, но как его описать?


 
DVM ©   (2004-05-04 16:58) [2]


> но как его описать?

Массив из записей?


 
Erik ©   (2004-05-04 16:58) [3]

TstType = (stNone, stBold);
RMyRec = Record
MyType: TstType;
Value: String;
end;
MyVar: Array of RMyRec;

MyVar[0].MyType := stNone;
MyVar[0].Value := "Пример1";


 
webpauk   (2004-05-04 17:01) [4]

это я уже делал
но такая форма неудобна для записи функции
требуется что-то типа:
Form1.Canvas.Polyline([Point(1, 1), Point(100, 100)]);


 
Anatoly Podgoretsky ©   (2004-05-04 17:02) [5]

Это Open Array - три штуки, скобки ддя красоты


 
Palladin ©   (2004-05-04 17:03) [6]

в таком виде массив в функцию передавать непозволит синтаксис паскаля... delphi тоесть


 
DVM ©   (2004-05-04 17:04) [7]


> требуется что-то типа:
> Form1.Canvas.Polyline([Point(1, 1), Point(100, 100)]);

здесь все просто: массив of TPoint.


 
webpauk   (2004-05-04 17:07) [8]

>DVM
блин, это же я к примеру показал форму записи.
такая же, только с моими аргументами нужна мне в моей функц.


 
Erik ©   (2004-05-04 17:09) [9]

Может подойдет Array of const? Это по сути дела вариантные переменые.


 
Palladin ©   (2004-05-04 17:10) [10]

Function MyRec(r1,r2:integer;const r3:string):TMyRec;
begin
result.r1:=r1;
result.r2:=r2;
result.r3:=r3;
end

трудно?? не думаю


 
DVM ©   (2004-05-04 17:10) [11]


> webpauk   (04.05.04 17:07) [8]

Может массив из функций?


 
webpauk   (2004-05-04 17:12) [12]

пробовал
не слишком красиво, но годится
один недостаток - всю хрень придется писать в одном массиве


 
Palladin ©   (2004-05-04 17:16) [13]

может тебе еще приблуду нужно что бы говоришь в микрофон что хочешь а программа сама писалась?


 
webpauk   (2004-05-04 17:18) [14]

>Palladin
а у тебя такая есть?


 
webpauk   (2004-05-04 17:24) [15]

>Palladin

Function MyRec(r1,r2:integer;const r3:string):TMyRec;
begin
result.r1:=r1;
result.r2:=r2;
result.r3:=r3;
end


лады!
но как определить след функц, которая должна учитывать array of Myrec?


 
Palladin ©   (2004-05-04 17:24) [16]

в принципе есть, только не у меня и не в микрофон и только в разработке...

объясни популярным языком, в чем ты видишь не слишком красивость, вот люди пошли красиво не красиво... ну цветочки по бокам поставь...

if then else
if then else
if then;

красиво? при правильно форматировании и красиво и понятно...

в чем проблема описывании все этой "хрени" в одном массиве? пальцы устанут? Набей в текстовый файл и читай оттуда в массив, а потом передавай. Заведи таблицу и от туда читай. Это будет более красиво. Но ты уперся в передачу функции именно массива записей-констант... и сразу уже понятно что некрасива сама идея, а не ее решение...


 
Palladin ©   (2004-05-04 17:26) [17]


> webpauk   (04.05.04 17:24) [15]


мда... ДтСд

type
tmyrec=record
end;

function myfunc(recs:array of tmyrec);
begin
end;

...
myfunc([myrec(),myrec(),myrec(),myrec().... ]);
...

и называется это open arrays


 
webpauk   (2004-05-04 17:27) [18]

блин, ну должно же быть решение в том виде, который я предложил в начале


 
Alex Konshin ©   (2004-05-04 17:38) [19]

Массив записей. Только придется все-таки писать имена полей.
Так что более компактно будет open array (т.е. array of const) как уже писали ранее. Но тогда не будет проверки типов компиляторов и придется защиту от дурака делать динамическую, т.е. во время выполнения проверять типы и количество элементов в массиве.  
Т.е. описание будет как function func ( args : array of const )
а вызов будет как func( [stBold, "Пример1", stNone, "Пример2", stBold, "Пример3"] )


 
webpauk   (2004-05-04 17:46) [20]

проблемка:array of const: Variant
не поддерживаетс пользовательские типы


 
webpauk   (2004-05-04 17:47) [21]

придется отказаться

жаль! а как всё было красиво


 
Alex Konshin ©   (2004-05-04 19:31) [22]

Ты неправду говоришь. array of const никакого отношения к Variant не имеет.
И никаких особых проблем (кроме доступа к элементоам) не вижу.
Я использую иногда такой способ передачи данных.


 
Alex Konshin ©   (2004-05-04 19:32) [23]

Погляди, например, на функцию Format.



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

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

Наверх




Память: 0.51 MB
Время: 0.073 c
1-1083128507
din
2004-04-28 09:01
2004.05.16
Lookup в гриде


14-1082801250
DoG
2004-04-24 14:07
2004.05.16
Обмен Сообщениями !


1-1083298689
Kliiip
2004-04-30 08:18
2004.05.16
Как сохранить параметры формы и компонентов в нем?


14-1082512350
Думкин
2004-04-21 05:52
2004.05.16
С днем рождения! 21 апреля.


1-1083322967
Amid
2004-04-30 15:02
2004.05.16
Ошибка при читении функции из DLL