IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Reply to this topicStart new topic
> Или я дурак или одно из двух, Простой вопрос по Дэлфи
Berserker
сообщение 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; // изменилось определение

Весь код мёртвый, модульность и раздельная компиляция не работают. Было поле, стала функция. Поэтому даже не самые умные люди такие простые вещи понимают при разработке языков. За сим откланиваюсь, имея столько свободного времени, ликбезом можно заниматься самостоятельно.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 21 Apr 2012, 14:33
Сообщение #22

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




Цитата(Berserker @ 21 Apr 2012, 13:56) *
безопасной разработке программного обеспечения
ок, замени макрос на inline. те же яйца, только в профиль.
Цитата(Berserker @ 21 Apr 2012, 13:56) *
INC это предопределённая процедура, принимающая аргумент по ссылке (VAR). Свойства по ссылке передаваться не могут по понятным причинам. В конечном итоге они могут вести к функциям.
но сделать инкремент универсальным можно же. propertySet(propertyGet()+1)
Цитата(Guevara-chan @ 21 Apr 2012, 14:02) *
Тогда, простите, может еще к System.Pi следует относиться как функции ?
уже представил компилятор, в котором пи = 4
Цитата(Guevara-chan @ 21 Apr 2012, 14:02) *
По ссылке, в данном случае, может быть передан адрес соотв. поля в памяти.
компилятор не оптимизирует, операторы не универсальны. вообще бардак. о какой передаче после этого может быть речь?
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 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
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Throutle
сообщение 21 Apr 2012, 18:50
Сообщение #24

Freedom Fighter
Сообщений: 1 850
Спасибо сказали: 4014 раза




Цитата(Berserker @ 21 Apr 2012, 14:56) *
Код
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!
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 21 Apr 2012, 18:56 (Сообщение отредактировал Guevara-chan - 21 Apr 2012, 21:54)
Сообщение #25

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата
Единственный кто понял вопрос правильно...

Вообще-то он просто "перевел" за тебя мой пример, но да как будет угодно. Тему закрывать ?


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
pHOMM
сообщение 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


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 21 Apr 2012, 20:01
Сообщение #27

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




Цитата(pHOMM @ 21 Apr 2012, 19:41) *
в паскале, собственно, низкий порог вхождения без неявностей типа скрытого каста инта в бул
в c# же вообще неявных кастов не бывает, обязательная запись способа передачи параметра при вызове функций, сборщик мусора и нет параметров по умолчанию. куда дружелюбнее к новичкам, чем паскаль.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 21 Apr 2012, 20:31
Сообщение #28

laughed as one fey
Сообщений: 12 166
Спасибо сказали: 20585 раз




Цитата
в c# же вообще неявных кастов не бывает

Расширяющие же, не? Или они не в счет?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 21 Apr 2012, 21:39
Сообщение #29

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




хм, почему-то я думал они только для классов работают. но по крайней мере они не теряют информацию
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 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
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 21 Apr 2012, 22:45
Сообщение #31

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




не пойму зачем оно переносит в ebx, если результат функции все равно в eax возвращать.
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 21 Apr 2012, 23:00 (Сообщение отредактировал Guevara-chan - 22 Apr 2012, 09:27)
Сообщение #32

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата(gamecreator @ 21 Apr 2012, 23:45) *
не пойму зачем оно переносит в ebx, если результат функции все равно в eax возвращать.

У компилятора PB, увы, много фобий касательно регистра EAX. Это - одна из них.


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Throutle
сообщение 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!
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 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
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Throutle
сообщение 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!
Go to the top of the pageAdd Nick
 
+Quote Post
Throutle
сообщение 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!
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 30 May 2012, 21:47
Сообщение #37

😸🧡✊✌️
Сообщений: 16 027
Спасибо сказали: 2672 раза




На всякий ввод пользователя тут же пробуй преобразовать его в число, а затем на равенство строке '-'. Если оба теста проваливаются, тут же возврашай предыдущий текст. Qt-шный QIntValidator именно так работает.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 30 May 2012, 23:11
Сообщение #38

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




Может что-то типа такого? http://forum.boolean.name/showthread.php?t=5561


--------------------
using namespace fbx;


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25 April 2024 - 19:29
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика