Или я дурак или одно из двух, Простой вопрос по Дэлфи |
Здравствуйте, гость ( Вход | Регистрация )
Или я дурак или одно из двух, Простой вопрос по Дэлфи |
21 Apr 2012, 14:08
(Сообщение отредактировал Berserker - 21 Apr 2012, 14:12)
Сообщение
#21
|
|
Immortal Сообщений: 1 468 Спасибо сказали: 1151 раз |
Цитата Хирт - вуй. Все по аналогии (же). Не вижу смысла в дальнейшей беседе. Цитата Тогда, простите, к System.Pi следует относиться как функции ? А как она объявлена? FUNCTION Pi : EXTENDED; Цитата По ссылке, в данном случае, может быть передан адрес соотв. поля в памяти. Покажу лишь простой пример: PROPERTY A: INTEGER READ fA; INC(A); // нельзя, свойство недоступно на запись PROPERTY A: INTEGER READ fA WRITE fA; INC(A); // предположим, что можно, но... PROPERTY A: INTEGER READ GetA WRITE fA; // изменилось определение Весь код мёртвый, модульность и раздельная компиляция не работают. Было поле, стала функция. Поэтому даже не самые умные люди такие простые вещи понимают при разработке языков. За сим откланиваюсь, имея столько свободного времени, ликбезом можно заниматься самостоятельно. -------------------- |
|
|
21 Apr 2012, 14:33
Сообщение
#22
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
безопасной разработке программного обеспечения ок, замени макрос на inline. те же яйца, только в профиль.INC это предопределённая процедура, принимающая аргумент по ссылке (VAR). Свойства по ссылке передаваться не могут по понятным причинам. В конечном итоге они могут вести к функциям. но сделать инкремент универсальным можно же. propertySet(propertyGet()+1)Тогда, простите, может еще к System.Pi следует относиться как функции ? уже представил компилятор, в котором пи = 4По ссылке, в данном случае, может быть передан адрес соотв. поля в памяти. компилятор не оптимизирует, операторы не универсальны. вообще бардак. о какой передаче после этого может быть речь?
|
|
|
21 Apr 2012, 14:43
(Сообщение отредактировал Guevara-chan - 21 Apr 2012, 21:24)
Сообщение
#23
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Цитата Не вижу смысла в дальнейшей беседе. А в чем ты видишь смысл, позволь полюбопытствовать ? В вырожденной перегрузке long word’а под названием ‘Boolean’, коею компилятор даже не желает по-тихому обработать, чтобы никто не знал ? Даже, пожалуй, не поленюсь дать пример: Код If ReadFile(0, “имя_файла”); Открываем файл на чтение. Если получилось... ; [Читаем данные] Closefile(0); ...Закрываем файл. Else; [Выводим ошибку] Endif ...Да, ‘ReadFile’ в данном случае возвращает какой-то свой код, о значении которого я могу не задумываться. Теперь попробуй то же самое на Delphi. Цитата А как она объявлена? Такие подробности должны волновать доказательного программиста, коий принципиально не в курсе о байтах и тактах ? Цитата Весь код мёртвый, модульность и раздельная компиляция не работают. А если все INC'и из примера заменить на A := A + 1, то он оживет обратно ? Цитата уже представил компилятор, в котором пи = 4 Есть немного: http://www.bestwtf.com/2010/11/explaining-why-pi-is-4.html Цитата компилятор не оптимизирует, операторы не универсальны. вообще бардак. о какой передаче после этого может быть речь? После берсеркерского траура по модульности я вообще в способностях Delphi к работе с ООП сомневаться начала... Но вообще помимо Get/Set простым полям можно просто еще ввести автоконструируемое по умолчанию AccessPtr. ...Что я, собственно, пытаюсь сказать: инструмент разработки должен либо самостоятельно решать технические неувязки (HLL:Prolog,REBOL,Nemerle,etc), либо предоставить свободу работы с ними программисту (MLL:PureBASIC,C,FORTH,etc). Одно из двух, иначе получается полное Delphi. -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
21 Apr 2012, 18:50
Сообщение
#24
|
|
Freedom Fighter Сообщений: 1 850 Спасибо сказали: 4014 раза |
Код FUNCTION RandSign: INTEGER; BEGIN RESULT := 1 - 2 * Random(2); END; Вот такая функция вполне вписывается в пройденную на данный момент часть обучения, попробую как будут делфя под рукой (дома не ставлю этого монстра)... З.Ы. Единственный кто понял вопрос правильно... Хотя бы потому что был интересен ответ не на профессиональном уровне и даже не на моём, а на уровне текущей части обучения... СПС! -------------------- In this wild and woolly universe of ours, there are only three things you can count on: your brains, your bros, and your bike! |
|
|
21 Apr 2012, 18:56
(Сообщение отредактировал Guevara-chan - 21 Apr 2012, 21:54)
Сообщение
#25
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Цитата Единственный кто понял вопрос правильно... Вообще-то он просто "перевел" за тебя мой пример, но да как будет угодно. Тему закрывать ? -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
21 Apr 2012, 19:41
Сообщение
#26
|
|
Что же Вы , Маэстры, ну-ка гряньте нам что-нибудь !!! Сообщений: 226 Спасибо сказали: 171 раз |
А не проще не делать привязку к знаку а просто
Код if random(2) = 1 then shape1.top := shape1.top + 1 else shape1.top := shape1.top - 1; if random(2) = 1 then shape1.left := shape1.left + 1 else shape1.left := shape1.left - 1; Randomize делается 1 раз на старте программы - традиционно в FormCreate Также можно упростить код из 1 поста до вида: Код shape1.left := shape1.left + RandSign; // Berserker's randsign shape1.top := shape1.top + RandSign; Обсуждение о булеане считаю оффтопом, давайте не холиварить, каждый инструмент для своей задачи (в паскале, собственно, низкий порог вхождения без неявностей типа скрытого каста инта в бул, который если нужен, всегда можно сделать Ord(bool) или даже непосредственно Integer(bool)) Инк-обсуждение тоже оффтоп )) Темку можно и не закрывать, чувствую, что не один вопрос ещё будет -------------------- Это всё я : кодинГ, мэпмейкинГ, скриптинГ
Инфо о моих проектах, в основном геройских, http://phomm.narod.ru Раздел моей тактической игры Интакт http://forum.df2.ru/index.php?showforum=135 |
|
|
21 Apr 2012, 20:01
Сообщение
#27
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
в паскале, собственно, низкий порог вхождения без неявностей типа скрытого каста инта в бул в c# же вообще неявных кастов не бывает, обязательная запись способа передачи параметра при вызове функций, сборщик мусора и нет параметров по умолчанию. куда дружелюбнее к новичкам, чем паскаль.
|
|
|
21 Apr 2012, 20:31
Сообщение
#28
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
Цитата в c# же вообще неявных кастов не бывает Расширяющие же, не? Или они не в счет? |
|
|
21 Apr 2012, 21:39
Сообщение
#29
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
хм, почему-то я думал они только для классов работают. но по крайней мере они не теряют информацию
|
|
|
21 Apr 2012, 21:58
(Сообщение отредактировал Guevara-chan - 21 Apr 2012, 22:00)
Сообщение
#30
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Не поленилась, вот, дизассемблировать свой вариант RandomSgn:
Код push dword 0x1 call dword 0x4054fb mov ebx, eax neg ebx or ebx, 0x1 ...и, дабы уж сразу, аналог by Berserker... Код push dword 0x1 call dword 0x4054fb mov ebx, eax add ebx, ebx neg ebx inc ebx Дело, в принципе, хозяйское (+/- операнд). Suum cique. -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
21 Apr 2012, 22:45
Сообщение
#31
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
не пойму зачем оно переносит в ebx, если результат функции все равно в eax возвращать.
|
|
|
21 Apr 2012, 23:00
(Сообщение отредактировал Guevara-chan - 22 Apr 2012, 09:27)
Сообщение
#32
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
не пойму зачем оно переносит в ebx, если результат функции все равно в eax возвращать. У компилятора PB, увы, много фобий касательно регистра EAX. Это - одна из них. -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
25 May 2012, 21:17
Сообщение
#33
|
|
Freedom Fighter Сообщений: 1 850 Спасибо сказали: 4014 раза |
Ещё 1 вопросик, незнаю как бы нагуглить, потому решил спросить...
В form1 на клик по кнопке происходит form2.show; в form2 на клик по кнопке происходит form2.hide; form1.show;... Так всё работает как надо, а вот если в form1 делать не form2.show а form2.showmodal, то после нажатия в form2 нужной кнопки она скрывается, но фокус form1 не возвращается... Вот собственно и вопрос: как вернуть фокус первой форме, если вторая открыта из него в модальном режиме? -------------------- In this wild and woolly universe of ours, there are only three things you can count on: your brains, your bros, and your bike! |
|
|
26 May 2012, 11:37
(Сообщение отредактировал Guevara-chan - 26 May 2012, 12:00)
Сообщение
#34
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
http://msdn.microsoft.com/en-us/library/wi...1(v=vs.85).aspx ? Ну или местное SetFocus...
-------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
26 May 2012, 13:38
Сообщение
#35
|
|
Freedom Fighter Сообщений: 1 850 Спасибо сказали: 4014 раза |
Всё, вопрос снят, прослушал, что закрывать не hide`ом, а всего-навсего close`ом )
-------------------- In this wild and woolly universe of ours, there are only three things you can count on: your brains, your bros, and your bike! |
|
|
30 May 2012, 21:18
(Сообщение отредактировал Throutle - 30 May 2012, 21:18)
Сообщение
#36
|
|
Freedom Fighter Сообщений: 1 850 Спасибо сказали: 4014 раза |
И снова я...
Нужно ограничить пользователя при вводе данных в стринггрид: ввод минуса не в первую позицию, ввод второго минуса, ввод чисел перед минусом. Для эдита я решал это так: Код procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9', #8: if (Edit1.SelStart=0)and(pos('-',Edit1.Text)>0) then Key:=#0; '-': if (Edit1.SelStart<>0)or(pos('-',Edit1.Text)>0) then Key:=#0; else Key:=#0; end; end; А в стринггриде нет селстарта, потому единственное что работает так же это запрет ввода 2-го минуса: Код '-': if pos('-',StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row])>0 then Key:=#0; Не подскажете, что можно сделать для оставшихся 2-х ситуаций? -------------------- In this wild and woolly universe of ours, there are only three things you can count on: your brains, your bros, and your bike! |
|
|
30 May 2012, 21:47
Сообщение
#37
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
На всякий ввод пользователя тут же пробуй преобразовать его в число, а затем на равенство строке '-'. Если оба теста проваливаются, тут же возврашай предыдущий текст. Qt-шный QIntValidator именно так работает.
-------------------- |
|
|
30 May 2012, 23:11
Сообщение
#38
|
|
🐓🐓🐓🐓🐓🐓🐓 Сообщений: 1 845 Спасибо сказали: 1570 раз |
Может что-то типа такого? http://forum.boolean.name/showthread.php?t=5561
-------------------- using namespace fbx;
|
|
|
Текстовая версия | Сейчас: 25 April 2024 - 19:29 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |