- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
procedure tmythread.execute;
procedure fillmemo;
begin
form1.memo1.lines.add('Some string');
end;
begin
synchronize(fillmemo); //[Error] Unit1.pas(54): There is no overloaded version of 'Synchronize' that can be called with these arguments
end;
Stertor 29.01.2014 21:56 # 0
bormand 29.01.2014 22:03 # 0
А почему оно не компилится - я х.з. Надо смотреть сигнатуру synchronize'а. Возможно он со спецом не жрет вложенные функции.
О нормальных лямбдах, которые должны проканать на 2009: http://8vmr.livejournal.com/6114.html
Реквестирую в тред Тараса, чтобы он меня поправил и обозвал нубом, не знающим делфи.
Stertor 29.01.2014 22:11 # 0
ведь не пидорасит.
p/s/
Василий,если Вы здесь,срочно забаньте ботов - форум спамят.
bormand 29.01.2014 22:13 # +2
Ну да, резонно. Синхронайз же текущий поток держит в спячке, пока функция до конца не выполнится.
Тогда попробуй передать @fillmemo вместо fillmemo. Вроде же в паскале так делали указатель на функцию, а fillmemo - ее вызов.
P.S. Я в делфи реально нуб.
Stertor 29.01.2014 22:18 # 0
Ой, не скромничайте )
laMer007 30.01.2014 08:20 # 0
Вопрос только в том, кто успеет первым?
bormand 30.01.2014 09:20 # 0
laMer007 30.01.2014 10:08 # 0
Не важно. Упрощу код для понимания.
Что произойдет? UB. Хоть упадет.
Stertor 30.01.2014 14:05 # 0
laMer007 30.01.2014 14:17 # +1
TarasB 30.01.2014 09:32 # 0
Нельзя такую хуйню делать. @ это чтобы убрать проверку соответствия процедурных типов с непредсказуемыми последствиями.
Abbath 30.01.2014 12:07 # +1
Костыли уже встроены в язык?
roman-kashitsyn 30.01.2014 12:10 # 0
TarasB 30.01.2014 09:32 # 0
> synchronize(ololo);
то есть оно таки принимает не процедуру, а делегат
Odin 03.11.2018 17:07 # 0
Это в каком таком потоке я хуй?
kipar 29.01.2014 23:14 # +1
Не тарас, но потому что старый дельфи не может в замыкания. А вложенная процедура - это таки замыкание (могло бы быть), т.к. имеет доступ к локальным переменным вызвавшей процедуры.
Разумеется код ниже работает т.к. там нет доступа к локальным переменным, только к полям объекта.
bormand 29.01.2014 23:16 # 0
kipar 29.01.2014 23:17 # +2
Насчет дохнут - а как компилятору это разрулить? Молча разрешать брать на них указатель и потом крашиться?
bormand 29.01.2014 23:23 # 0
kipar 29.01.2014 23:27 # +2
guest6 31.07.2024 15:02 # 0
Для сравнения в gcc чтобы работали указатели на вложенные функции, пришлось делать трамплины. Т. е. в gcc замыкания — это уже не чистые функции, а что-то похожее на методы объектов (хотя в няшной по стандарту ООП нету).
В стандартном же Паскале не было процедурного типа, но был тип аргумента procedure, а как там было со вложенными функциями, не знаю. Некоторые реализации стандартного Паскаля компилировались не в нативный код, а в P-code, так что там возможность реализации всяких фишек зависела от виртуальной машины.
guest6 31.07.2024 15:03 # 0
TarasB 30.01.2014 09:36 # +1
Авотхуй.
Кстати в Аде передаются, но только если ты скажешь, что sort принимает именно замыкание, а не функцию. Кстати синтаксис описания замыкания в Аде эээ отсутствует. Надо писать
И затайпдефнуть эту хрень никакого способа нету!!! И это в Аде, что везде и всегда заставляет каждый чих тайпдефить!!!
TarasB 30.01.2014 10:25 # 0
TarasB 30.01.2014 10:26 # +3
defecate-plusplus 30.01.2014 10:29 # +2
laMer007 30.01.2014 10:35 # 0
TarasB 30.01.2014 10:40 # 0
defecate-plusplus 30.01.2014 10:42 # +2
TarasB 30.01.2014 10:48 # +1
defecate-plusplus 30.01.2014 10:54 # 0
TarasB 30.01.2014 11:00 # 0
Кстати я в натуре не знаю, как при перегрузке надо звать указатель на функцию, чтобы было однозначно.
roman-kashitsyn 30.01.2014 11:01 # 0
Как? Статик каст? Промежуточная переменная?
laMer007 30.01.2014 11:23 # 0
Ещё можно так:
bind можно выкинуть, передав &a в конструктор B. Правда чтобы не выводить самому шаблон ST в B - можно написать функцию генератор. B конечно может быть не шаблонным, если случай как здесь достаточно частный.
roman-kashitsyn 30.01.2014 11:42 # +1
TarasB 30.01.2014 11:54 # 0
Почему нельзя написать
auto fc = f(char)?
laMer007 30.01.2014 12:02 # 0
Ну почему нельзя? Можно.
Только не заработает. Пишите свой язык. Ктож запрещает? Особенно если для себя.
doomginho 31.07.2024 17:10 # 0
laMer007 30.01.2014 10:59 # +1
TarasB 30.01.2014 11:17 # 0
КРЕСТОКОСТЫЛЬ
laMer007 30.01.2014 11:32 # 0
TarasB 30.01.2014 11:36 # 0
defecate-plusplus 30.01.2014 11:40 # +4
на гейдеве с год назад был такой же дельфинодеятель, который жаловался на +4 (8) байта памяти для "делегатов" в ненавистных крестах и писал свою надмозговую крестовелобиблиотеку, дежавю
kipar 30.01.2014 11:42 # +3
TarasB 30.01.2014 11:55 # +3
АЗАЗА Я ТИБЯ ЗАТРАЛЕЛ КРИСТАБЛЯДЬ У ТЕБЯ ПУКАН ПОРВАЛО ПАТАМУШТА Я ТОНКИЙ ТРОЛЛЬ ))0000
defecate-plusplus 30.01.2014 12:04 # +1
странно, что тут до сих пор кто-то не понимает здорового армейского юмора
laMer007 30.01.2014 12:08 # 0
defecate-plusplus 30.01.2014 12:18 # +4
какой моральный облик ты хотел увидеть?
laMer007 30.01.2014 12:21 # +1
TarasB 30.01.2014 13:03 # +2
laMer007 30.01.2014 13:32 # 0
laMer007 30.01.2014 16:13 # 0
> моральный облик
Кстати, а может это гк растлил Тараса?
Я тут подумал, Тарас на гейдеве ведёт себя адекватнее.
TarasB 30.01.2014 16:16 # +2
laMer007 30.01.2014 16:18 # 0
тут модераторов нет... хи-хи-хи... ты сам за собой следишь, а я - всего лишь голос в твоей голове
TarasB 30.01.2014 16:21 # 0
laMer007 30.01.2014 16:24 # 0
bormand 30.01.2014 16:57 # +2
Ну видимо просто за блядь. Хоть с крестами хоть без ;)
MaaKut 07.11.2021 20:32 # 0
laMer007 30.01.2014 22:06 # 0
Хм. А я уж подумал, что модераторов нет. Интересно, почему этот герой не ставит подпись? Я должен знать своего героя.
bormand 30.01.2014 22:24 # +1
Сам дописал красный текст, забыл о нем, и подумал что это модер? ;)
Раздвоение личности, однако...
laMer007 30.01.2014 22:32 # 0
kegdan 30.01.2014 22:57 # −2
Abbath 31.01.2014 00:13 # +3
Stertor 31.01.2014 15:00 # 0
TarasB 30.01.2014 11:55 # +1
defecate-plusplus 30.01.2014 11:59 # 0
laMer007 30.01.2014 12:04 # 0
TarasB 30.01.2014 12:09 # −1
laMer007 30.01.2014 12:14 # +2
http://hontos.ru/wp-content/uploads/2011/11/134.jpg
Lure Of Chaos 30.01.2014 19:27 # 0
laMer007 30.01.2014 22:05 # 0
kipar 30.01.2014 22:17 # +1
laMer007 30.01.2014 22:35 # 0
roman-kashitsyn 30.01.2014 22:42 # 0
kegdan 30.01.2014 22:46 # 0
laMer007 30.01.2014 22:59 # 0
kegdan 30.01.2014 23:06 # 0
1024-- 30.01.2014 23:14 # +1
laMer007 30.01.2014 11:41 # 0
laMer007 30.01.2014 11:05 # 0
Или даже так:
roman-kashitsyn 30.01.2014 10:44 # +1
roman-kashitsyn 30.01.2014 10:43 # +3
laMer007 30.01.2014 10:50 # 0
TarasB 30.01.2014 10:53 # +4
defecate-plusplus 30.01.2014 11:00 # +7
laMer007 30.01.2014 11:01 # +3
TarasB 30.01.2014 11:18 # +4
слишком медленно деньги копятся
laMer007 30.01.2014 11:28 # 0
laMer007 30.01.2014 11:31 # 0
Мама довольна хоть?
roman-kashitsyn 30.01.2014 10:55 # +4
Gentoo, gcc, перфоманс, скилл
TarasB 30.01.2014 09:31 # +2
Есть такой тип reference to procedure (...), являет собой объект, аллоцирующий в куче то, что он захватил и имеющий виртуальный метод (), управляется по счётчику ссылок. Так вот вложенные функции - это он и есть, ну вернее не он, но может приводиться к нему.
bormand 30.01.2014 09:54 # 0
kipar 30.01.2014 11:44 # 0
TarasB 30.01.2014 11:56 # 0
1. Вложенные функции
2. Делегаты
3. Собсна замыкания
Abbath 29.01.2014 23:16 # +1
"Анус" трескает.
Lure Of Chaos 30.01.2014 13:15 # +3
извините, не удержался после беглого прочтения дискуссии
Stertor 30.01.2014 13:57 # 0
Цикл заполняет мемо, читая из листа, и тут же рядом цикл крутит processmessages. Не возникнет ли асинхронность, которая вызовет выход за границы?
TarasB 30.01.2014 14:05 # +2
begin
timer1.Enabled:=false;
while true do
application.ProcessMessages; {на form.create() цеплять нельзя, форма не покажется.}
end;
ЧТО ЭТО ЗА ХУЙНЯ?!
Stertor 30.01.2014 14:15 # 0
TarasB 30.01.2014 14:26 # +1
Ты знаешь, что такое асинхронность?
Твой таймер делает хуйню, вернее он делает то, что программа делает и без него.
Stertor 30.01.2014 14:28 # 0
TarasB 30.01.2014 14:50 # +1
chtulhu 30.01.2014 15:25 # +2
Очередь сообщений имеет смысл дергать при ожидании нужного сообщения или определенный условий. Что-то вроде ожидания семафора(мьютекса) без блокировки потока.
TarasB 30.01.2014 15:29 # 0
Равномерно не обязательно.
> обходить рекурсивную структуру лучше в отдельном потоке
Траеблядь штоле?
chtulhu 30.01.2014 15:38 # +5
TarasB 30.01.2014 15:47 # 0
TarasB 30.01.2014 15:59 # +1
defecate-plusplus 30.01.2014 15:59 # +4
типичная краткая история отечественных вокально-инструментальных ансамблей
defecate-plusplus 30.01.2014 16:06 # +9
TarasB 30.01.2014 16:17 # +2
Lure Of Chaos 30.01.2014 19:22 # 0
laMer007 30.01.2014 22:08 # +5
Stertor 30.01.2014 17:45 # 0
>>Траеблядь штоле?
У Гислера в ТК она однопоточная )
TarasB 30.01.2014 18:47 # 0
Потому что Гитлер был плохой и тредоблядство тоже плохо.
TarasB 30.01.2014 14:13 # +1
Stertor 30.01.2014 14:20 # 0
Я хочу узнать, безопасно ли будет нажимать вышеуказанные кнопки, когда где-то рядом крутится processmessages. Если без processmessages, то после нажатия кнопки Button1 форма залочена - юзер физически не сможет нажать на Button2. А с application.processmessages вроде сможет, и это вызовет крах. Или не?
Stertor 30.01.2014 14:25 # 0
laMer007 04.02.2014 11:43 # 0
Stertor 04.02.2014 11:49 # 0
laMer007 04.02.2014 11:50 # +1
Stertor 04.02.2014 11:55 # 0
>>Или может в потоке диалога?
Если под диалогом подразумевается главная форма, то пожалуй, да.