Имя: Пароль:
IT
 
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
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) ерунда какая