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