|
Delphi. Двухмерный массив разных типов данных. | ☑ | ||
---|---|---|---|---|
0
Hazer79
21.05.13
✎
15:52
|
Нужно в один двухмерный массив запихнуть числа и даты. В одном измерении только числа, в другом - только даты. Можно, конечно, сделать его весь Variant, но, имхо, некошерно.
Как поэлегантнее ? |
|||
1
Ненавижу 1С
гуру
21.05.13
✎
15:54
|
>>В одном измерении только числа, в другом - только даты
это как? |
|||
2
H A D G E H O G s
21.05.13
✎
15:56
|
Че там? Дата - скока байт? 8 вроде? Ну и делай Cardinal (Integer) себе на здоровье.
|
|||
3
H A D G E H O G s
21.05.13
✎
15:57
|
Пфффф.
Пацаны в Дельфи в поле Tag указатель засовывали и ниче. |
|||
4
H A D G E H O G s
21.05.13
✎
15:57
|
(3) КтоСлужилТотПоймет.
|
|||
5
Fragster
гуру
21.05.13
✎
15:58
|
не понял... двумерный массив - это же матрица. что значит "в одном измерении"?
|
|||
6
Hazer79
21.05.13
✎
15:58
|
(1) {{1, 01.04.2010}, {46, 23.12.1998}, {2, 02.02.2013}}
|
|||
7
Hazer79
21.05.13
✎
15:59
|
(4) не выпендривайся, скажи по делу
|
|||
8
acsent
21.05.13
✎
16:00
|
(7) тебе предлагают преобразовать дату к числу
|
|||
9
H A D G E H O G s
21.05.13
✎
16:02
|
(7) Делай массив типа Cardinal
var data:array [1..100,1..2] of Cardinal; ИВперед. |
|||
10
del123
21.05.13
✎
16:02
|
можно структуру забабахать
|
|||
11
del123
21.05.13
✎
16:03
|
и ее уже в массиво
|
|||
12
NS
21.05.13
✎
16:03
|
Есть в паскале такое ключевое слово record.
|
|||
13
Кирпич
21.05.13
✎
16:04
|
автор неграмотный. объяснить чо ему надо не в состоянии. ему нужен одномерный массив из записей типа
record end; |
|||
14
H A D G E H O G s
21.05.13
✎
16:05
|
(12) Точно, совсем вылетело!
|
|||
15
Андрюха
21.05.13
✎
16:05
|
(0) Массив TList можно
|
|||
16
Кирпич
21.05.13
✎
16:06
|
TMyRec = record
p1 : integer; p2 : double; end; TMyArray = array of TMyRec; |
|||
17
NS
21.05.13
✎
16:07
|
type X=Record
i:integer; d:TDateTime; end; var Y:array [1..100] of X; |
|||
18
H A D G E H O G s
21.05.13
✎
16:08
|
Или так.
Полезно для освобождения от "рамок" типизации var data:array [1..100,1..2] of Cardinal; NowDate1,NowDate2:TDateTime; begin NowDate1:=Now(); CopyMemory(@Data[1,1],@NowDate1,8); CopyMemory(@NowDate2,@Data[1,1],8); ShowMessage(DateTimeToStr(NowDate2)); |
|||
19
del123
21.05.13
✎
16:08
|
ну я тоже это и имел ввиду :))
|
|||
20
Hazer79
21.05.13
✎
16:08
|
Всём спасибо. Воспользуюсь Record
|
|||
21
H A D G E H O G s
21.05.13
✎
16:09
|
Тупой компилятор отказался от гнусности типа
Data[1,1]:=Cardinal(NowTime1); |
|||
22
HeroShima
21.05.13
✎
16:15
|
(0) классика, куча
|
|||
23
H A D G E H O G s
21.05.13
✎
16:16
|
(22) В Дельфи нет вашей C++ матершины.
|
|||
24
NS
21.05.13
✎
16:17
|
(22) Какое отношение куча имеет к этой задаче?!
|
|||
25
HeroShima
21.05.13
✎
16:17
|
(23) всё там есть
|
|||
26
HeroShima
21.05.13
✎
16:18
|
(24) сначала подумал, в ячейках нужно хранить неизвестно что
|
|||
27
Ненавижу 1С
гуру
21.05.13
✎
16:20
|
(21) потомя что TDate это Double
|
|||
28
Кирпич
21.05.13
✎
16:22
|
Блин, чо так воняет?!!! - заглядывая за гараж.
классика, куча. |
|||
29
HeroShima
21.05.13
✎
16:24
|
Умники, Variant просили не предлагать?
|
|||
30
Bugmenot
21.05.13
✎
16:24
|
Буду краток: делфи - не нужен
|
|||
31
H A D G E H O G s
21.05.13
✎
16:25
|
(27) Ну и?
Хочу взять 8 байт и представить их как Cardinal, чебынет? |
|||
32
Ненавижу 1С
гуру
21.05.13
✎
16:25
|
(29) lf
|
|||
33
H A D G E H O G s
21.05.13
✎
16:27
|
стоп. Cardinal - 4 байта. Признаю вину, 1С съело мозг.
|
|||
34
Кирпич
21.05.13
✎
16:27
|
Питон круче дельфи
|
|||
35
Ненавижу 1С
гуру
21.05.13
✎
16:28
|
(34) чем? чем делфи, да?
|
|||
36
NS
21.05.13
✎
16:28
|
(29) Где у тебя там variant? У тебя четко - одно поле числовое, второе дата. Никаких вариантов.
|
|||
37
Bugmenot
21.05.13
✎
16:28
|
(34) - а C# круче Питона!
|
|||
38
NS
21.05.13
✎
16:28
|
(34) Это точно, особенно быстродействие у него крутое.
|
|||
39
HeroShima
21.05.13
✎
16:30
|
(36) это где? у меня указатель и признак типа
|
|||
40
Кирпич
21.05.13
✎
16:30
|
(38)быстродействие для одинесников не важно
|
|||
41
HeroShima
21.05.13
✎
16:30
|
+ (39) а на потери при выделении памяти в классике все забивали)
|
|||
42
NS
21.05.13
✎
16:30
|
(39) У тебя - это в условии задачи.
|
|||
43
HeroShima
21.05.13
✎
16:31
|
(42) задача не моя...
|
|||
44
NS
21.05.13
✎
16:32
|
(43) Если ты её пытаешься решить - то уже твоя.
Либо расскажи что за задачу ты решаешь в этой ветке. |
|||
45
HeroShima
21.05.13
✎
16:34
|
(44) Variant - частный случай объединения, которое, как мне показалось, нужно автору.
|
|||
46
HeroShima
21.05.13
✎
16:35
|
(38) это у него лечится. могу рассказать как.
|
|||
47
Кирпич
21.05.13
✎
16:37
|
(46) расскажи
|
|||
48
HeroShima
21.05.13
✎
16:38
|
(47) в критических по скорости местах расставляются типы и всё собирается cython-ом в *.pyd
|
|||
49
Ненавижу 1С
гуру
21.05.13
✎
16:39
|
(45) автору нужен record из двух полей, просто автор не владеет языком
|
|||
50
NS
21.05.13
✎
16:39
|
(46) Это у него не лечится. В принципе.
Многократно обсуждалось на том-же codeforces |
|||
51
Кирпич
21.05.13
✎
16:40
|
(48) от надо так в 1с сделать. а то бывает надо чтобы быстро, а оно не может.
|
|||
52
HeroShima
21.05.13
✎
16:42
|
(50) Не лечится только то, что ограничено gil. Второй вопрос: структуры в си, дающие аналогичную гибкость, будут работать с какой скоростью?
|
|||
53
Ненавижу 1С
гуру
21.05.13
✎
16:43
|
(48) прочел, получается байт-код, но он же вроде медленнее машинного?
|
|||
54
HeroShima
21.05.13
✎
16:44
|
(53) нет, там трансляция python - c++ - машинный код
|
|||
55
User_Agronom
21.05.13
✎
16:47
|
(12) +
type Element = record Value:integer; DataTime:<Тип не помню((> end var Tabl: array of Element; |
|||
56
HeroShima
21.05.13
✎
16:48
|
(51) это можно делать уже сейчас
|
|||
57
Кирпич
21.05.13
✎
16:48
|
это как?
|
|||
58
HeroShima
21.05.13
✎
16:49
|
(57) на инфостарте статью вывалю
|
|||
59
Ненавижу 1С
гуру
21.05.13
✎
16:50
|
(58) вываливай тут
|
|||
60
HeroShima
21.05.13
✎
16:50
|
+(58) если это мне
|
|||
61
HeroShima
21.05.13
✎
16:50
|
(59) в доках цитона всё описано
|
|||
62
Кирпич
21.05.13
✎
16:51
|
(59) шо ещё за ацетон?
|
|||
63
Ненавижу 1С
гуру
21.05.13
✎
16:51
|
(61) он же уже про 1С
|
|||
64
HeroShima
21.05.13
✎
16:52
|
(63) так.. мою ВК скачали?
|
|||
65
Кирпич
21.05.13
✎
16:53
|
пардон (62) для (61)
|
|||
66
NS
21.05.13
✎
16:53
|
(61) Как минимум это не питон, а новый язык.
И с производительностью у него не так хорошо, как хотелось бы. |
|||
67
HeroShima
21.05.13
✎
16:55
|
(66) Новый/старый.. Лишь бы работал. По производительности, предполагаю, не хуже чем у дельфи на llvm.
|
|||
68
Ненавижу 1С
гуру
21.05.13
✎
16:56
|
(64) странный вопрос, я даже не знаю о ее существовании
|
|||
69
Xapac
21.05.13
✎
16:57
|
(3)ыыы мы так делали. у нас дерево указатели хранило на документики хтмловские, которые были в памяти
|
|||
70
HeroShima
21.05.13
✎
16:59
|
(68) http://infostart.ru/public/186206/ -тут
|
|||
71
NS
21.05.13
✎
16:59
|
(67) Учитывая что Делфи/fpc имеет примерно такое-же быстродействие как С/С++ компиляторы, то конечно-же cython медленней.
|
|||
72
Ненавижу 1С
гуру
21.05.13
✎
17:00
|
(70) денег нет
|
|||
73
HeroShima
21.05.13
✎
17:00
|
(71) cython с типами - это с/с++
|
|||
74
HeroShima
21.05.13
✎
17:02
|
Код страшный, но оптимизатор должен разгрызть.
|
|||
75
Кирпич
21.05.13
✎
17:05
|
(74) вот ты парень умный. тебе задание. сделай cython для 1с. чтобы язык 1с работал быстро, когда надо. а на питоне мы не хотим париться.
|
|||
76
HeroShima
21.05.13
✎
17:06
|
(75) спасибо на добром слове, но это не ко мне, а к Ним)
|
|||
77
NS
21.05.13
✎
17:06
|
(73) Если мы пишем питонный код, но с типизацией - то это не си. И быстродействие не как у си. Если писать сишный код, то какое отношение это имеет к питону?
|
|||
78
Кирпич
21.05.13
✎
17:07
|
(76) Ним пофиг. Надо самим что-то делать.
|
|||
79
HeroShima
21.05.13
✎
17:09
|
(77) Согласен, но приближенно по скорости. Если очень нужно, можно прямо си и вставлять.
|
|||
80
Serginio1
21.05.13
✎
17:14
|
TRec = packed record
case Boolean of True: ( I: Integer; ); False: ( D: Double; ); end; IsInteger:Bool; end |
|||
81
Bugmenot
29.05.13
✎
11:23
|
(71) - лолшто?
|
|||
82
Кирпич
29.05.13
✎
11:28
|
народ уже на мисту заходит просто клавиатуру проверить
|
|||
83
NS
29.05.13
✎
11:31
|
(81) Лол то что написано.
Несмотря что некоторые не в теме, быстродействие откомпилированного gcc/fpc/delphi кода примерно одинаково по быстродействию. |
|||
84
Bugmenot
29.05.13
✎
14:00
|
(83) - лолшто?
http://benchmarksgame.alioth.debian.org/u64q/pascal.php и это самая плохая реализация компилятора C++ А теперь сравним с Visual C++. Зы. то, что 90% системного и прикладного ПО написано на C++, а не на Паскале как бэ намекает, да |
|||
85
NS
29.05.13
✎
14:11
|
(84) Ты исходники тестов смотрел? А потребляемую память?
Это тесты не компилятора, а быстродействия String (который естественно если нужна оптимизация по скорости - никто не использует), и небуферизированного вывода при помощи writeln() - который естественно никто никогда вообще не использует. А в реальных приложениях скорость примерно одинакова. |
|||
86
Bugmenot
29.05.13
✎
14:35
|
(85) - приведи мне пожалуйста пример сервера БД, который написан на Паскале.
Ну выбрали этот язык, потомучто как ты говоришь "в реальных приложениях скорость одинакова" |
|||
87
Bugmenot
29.05.13
✎
14:42
|
меня всегда удивляла "аргументация" "любителей" паскаля.
Вот ведь все вокруг меня идиоты собрались - на С++ программируют, на Паскале, который гораздо лучше и такой же по быстрдействию - никто. Миллионы мух ошибаются ведь, да. |
|||
88
NS
29.05.13
✎
14:44
|
(86) При чем тут сервер БД?
С/С++ намного более популярны, и имеют намного больше готовых библиотек. И пишется всё в основном на С/С++. Но речь то шла не о популярности, и не библиотеках, а о быстродействии. А быстродействие у них почти одинаково. Жава - да, действительно медленней. Если не учитывать совсем медленный ввод/вывод, то разница в скорости достигает 2 раз. А Паскаль - примерно так-же как и Си. Именно поэтому очень многие олимпиадные программисты писали на Паскале - скорость кода та-же, и в TL впихнуть так-же просто как и на Си. А популярность паскаля начала падать только после того как его стали убирать из списка доступных языков. |
|||
89
NS
29.05.13
✎
14:45
|
(87) Бред не неси. Я пишу и на С/С++, и на Паскале, и на Java. Мне пофик на чем писать.
|
|||
90
Кирпич
29.05.13
✎
14:49
|
ну быстродействие от языка мало зависит, если оба языка имеют примерно одинаковые возможности. зависит от умности компилятора и алгоритмов. LLVM всех уровняет. аминь.
|
|||
91
Bugmenot
29.05.13
✎
14:54
|
(88) - на олимпиаднах используется паскаль, потому что перподы не хотят учить C/C++. Среди школоты и студентоты паскаЛь все еще популярен, пока не будет уволено старое поколение преподов.
К быстродействию программ выбор ЯП на олимпиадах не имеет никакого отдношения. >При чем тут сервер БД? Потому что серверы БД - это "реальные приложения". 1С: Предприятие между прочим сам по себе тоже "реальное приложение". Но у меня такое ощущение, что у тебя под "реальностью" понимается форма с 2 EditBox-ами и 3-мя кнопками. |
|||
92
NS
29.05.13
✎
14:56
|
(91) Какое отношение преподы имеют к спортивным программистам? Которые пишут естественно на всех языках.
|
|||
93
NS
29.05.13
✎
14:57
|
(91) Тебе объяснили почему серверы БД не пишут на паскале.
Быстродействие тут не при чем. |
|||
94
HeroShima
29.05.13
✎
15:06
|
Я работал в конторе, написавшей свою СУБД на дельфи. Со скорострельностью проблем не было.
|
|||
95
H A D G E H O G s
29.05.13
✎
15:07
|
(94) СУБД?
|
|||
96
Bugmenot
29.05.13
✎
15:07
|
(94) - сервер баз данных.
Даже Firebird, популярный среди паскалистов, написан на C++ Угадайте почему? |
|||
97
H A D G E H O G s
29.05.13
✎
15:08
|
(94) Свои индексы, управление памятью, и.т.д.?
|
|||
98
NS
29.05.13
✎
15:09
|
(96) По той-же причине почему мат. пакеты пишут на фортране.
При чем тут быстродействие? |
|||
99
HeroShima
29.05.13
✎
15:09
|
(95) именно
(97) да, всё своё |
|||
100
H A D G E H O G s
29.05.13
✎
15:10
|
(99) ППЦ, ну вы и герои.
|
|||
101
HeroShima
29.05.13
✎
15:10
|
добавлю: над дельфи был ещё уровень
|
|||
102
HeroShima
29.05.13
✎
15:10
|
(100) сам офигевал
|
|||
103
HeroShima
29.05.13
✎
15:13
|
(96) сколько процентов быстродействия можно вытянуть интеловским компилятором относительно gnu c++?
|
|||
104
rutony
29.05.13
✎
15:16
|
(100) Тоже довелось поработать в конторе со своей субд на скуле и дельфи. Я для них стругал отчеты на фаст репорте...
Софтина была очень мощная, ее еще 2 сотрудника как то уперли заграницу и загнали за 100к+ зеленых, в 2003 году... Тогда это были очень хорошие денежки... |
|||
105
Serginio1
29.05.13
✎
15:20
|
(97) Индексы кэширование страниц это все относительно фигня.
И работать с ней навигационным способом аля ДБФ с блокировками на уровне записи. Другой вопрос SQL и оптимизация компиляция запросов |
|||
106
HeroShima
29.05.13
✎
15:22
|
(105) всё было
|
|||
107
sdv2000
29.05.13
✎
15:24
|
но прошло
|
|||
108
HeroShima
29.05.13
✎
15:25
|
(107) и ты пройдёшь
|
|||
109
Serginio1
29.05.13
✎
15:26
|
Премущество C++ это шаблоны и прочая фигня типа кодогенераторов, плюс алгоритмы оптимизации кода. При этом время компиляции некоторых проектов могло исчисляться часами.
(106) Там вся проблема сводится к оптимизации запросов учитывая статистику, выборке плана запроса и его компиляция. |
|||
110
HeroShima
29.05.13
✎
15:28
|
(109) это всё не задача языка, так ведь?
|
|||
111
Serginio1
29.05.13
✎
15:35
|
(11) Конечно нет. Но есть еще проблема компиляции кода. Кстати тот же makeobjectinstance создает код в памяти для подмены записи в регистр Self. Так что динамическая компиляция это в некотором смысле проблема среды (Delphi это не только язык)
|
|||
112
qeos
29.05.13
✎
15:37
|
непонятно какая версия delphi..
используй дженерики.. |
|||
113
qeos
29.05.13
✎
15:39
|
опять же variant
|
|||
114
Кирпич
29.05.13
✎
15:53
|
(111) ты где такой умный текст берешь? дай ссылку на генератор.
|
|||
115
NS
29.05.13
✎
16:17
|
(109) Преимущество С++ в библиотеках, Фреймворках и т.д., так как это промышленный язык. А Паскаль изначально позиционируется как учебный, олимпиадный. Всё остальное мелочи.
Делфи, и fpc ситуацию с позиционированием изменить не смогли. |
|||
116
Serginio1
29.05.13
✎
16:30
|
(114) И что по твоему делает шаблон, макрос?
В большинстве случаев это подстановка текста перед компиляцией, хотя существую и иные формы хранения шаблонов. Например дженерики могут не перекомпилироваться если параметрами являются объекты. Но дженерики это байт код с кучей ограничений, чего нет в шаблонах, так как используются подстановки в код. Например в Дженерике нельзя написать для объекта неопределенного типа вызов функции не имея уточнения. В шаблонах пиши что угодно, только ошибка вылезет на этапе компиляции с определенными типами параметров. Дженерики ты можешь компилировать без типизации |
|||
117
NS
29.05.13
✎
16:44
|
(103) До полутора раз. Но это не преимущества языка, а преимущество коммерческого продукта.
|
|||
118
HeroShima
29.05.13
✎
17:14
|
(117) вот с++ относительно паскаля быстрее не больше чем на столько
(37) ерунда какая |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |