Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1083403477
k@rt
2004-05-01 13:24
2004.05.16
TListItem.Data


8-1077125673
__Alex__
2004-02-18 20:34
2004.05.16
компонент для просмтора avi роликов


1-1082893187
I.Ru.Ru
2004-04-25 15:39
2004.05.16
Можно ли в StringGridе изменять цвет определенной строки? Как?


6-1080234424
rezya
2004-03-25 20:07
2004.05.16
Проблема с неблокирующими сокетами.


1-1083233838
--Kostik--
2004-04-29 14:17
2004.05.16
Как мне показать прогресс запуска приложения?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский