Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

Процедуры и функции   Найти похожие ветки 

 
Steep ©   (2006-12-19 16:12) [0]

Как я понял использование (изменение) параметров компонента в сабже запрещена.
Как этого можно избежать обойти?


 
Ega23 ©   (2006-12-19 16:13) [1]


> Как я понял использование (изменение) параметров компонента
> в сабже запрещена.


Ты неправильно понял.


 
Джо ©   (2006-12-19 16:13) [2]

> [0] Steep ©   (19.12.06 16:12)
> Как я понял использование (изменение) параметров компонента
> в сабже запрещена.
> Как этого можно избежать обойти?

Переведи (c)


 
Плохиш ©   (2006-12-19 16:21) [3]


> Steep ©   (19.12.06 16:12)  
> Как я понял использование (изменение) параметров компонента
> в сабже запрещена.

Кем? Предявите закон.


 
Steep ©   (2006-12-19 16:24) [4]

ну я пытался изменить свойство в процедуре
procedure OK;
begin
Btn_OK.caption := "OK";
end;
он выдает ошибку..

но я тут почитал наверно можно так?
procedure OK (btn: TButton);
begin
btn.caption := "OK";
end;

правильно?


 
Anatoly Podgoretsky ©   (2006-12-19 16:27) [5]

> Steep  (19.12.2006 16:24:04)  [4]

И первое и второе правильно, если сделано правильно.


 
Сергей М. ©   (2006-12-19 16:28) [6]


> параметров компонента


Что такое "параметр компонента" ?

У компонента есть св-ва, методы, события.
А вот параметров я что-то не наблюдал ни разу ...


> он выдает ошибку..
>


Кто "он" ?


 
SergP ©   (2006-12-19 16:29) [7]

> [4] Steep ©   (19.12.06 16:24)
> ну я пытался изменить свойство в процедуре
> procedure OK;
> begin
> Btn_OK.caption := "OK";
> end;
> он выдает ошибку..
>


Правильно выдает... Оно не знает что такое Btn_OK
В таком случае можно писать что-то типа...:
Form1.Btn_OK.caption := "OK";

> [4] Steep ©   (19.12.06 16:24)
> но я тут почитал наверно можно так?
> procedure OK (btn: TButton);
> begin
> btn.caption := "OK";
> end;
>
> правильно?


Можно и так...


 
Джо ©   (2006-12-19 16:30) [8]

> ну я пытался изменить свойство в процедуре
> procedure OK;
> begin
> Btn_OK.caption := "OK";
> end;
> он выдает ошибку..

Возможно, Btn_OK не содержит ссылку на экз. нужного компонента.


 
Anatoly Podgoretsky ©   (2006-12-19 16:31) [9]

> Сергей М.  (19.12.2006 16:28:06)  [6]

> Кто "он" ?

Ну он


 
Steep ©   (2006-12-19 16:31) [10]


> У компонента есть св-ва, методы, события.
> А вот параметров я что-то не наблюдал ни разу ...

Все равно ж поняли. ну не помню точного названия


> Кто "он" ?

Великий и ужасный! (Делфи :) )

> И первое и второе правильно, если сделано правильно.

да.. даже если процедура в отдельном юните?


 
Anatoly Podgoretsky ©   (2006-12-19 16:32) [11]

> SergP  (19.12.2006 16:29:07)  [7]

> Оно не знает что такое Btn_OK

Почему не знает, предположение/телепатия
Ну тогда надо сделать узнаваемым и это просто, наприме так

Btn_OK: TButton


 
Сергей М. ©   (2006-12-19 16:34) [12]


> ну не помню точного названия


А его не надо "помнить".

Оно всегда перед глазами - в Инспекторе Объектов.

Properties называется. По-руссконародному - свойства то бишь.


> Великий и ужасный


Компонент что ли ?)


> даже если процедура в отдельном юните?


да хоть на Луне)


 
Desdechado ©   (2006-12-19 16:34) [13]

область видимости переменных и классов учитывать надо


 
Anatoly Podgoretsky ©   (2006-12-19 16:36) [14]

> Steep  (19.12.2006 16:31:10)  [10]

Даже если в отдельном модуле, а что тебя смущает в модулях, это всего лишь единица разделения монолита на куски.


 
Anatoly Podgoretsky ©   (2006-12-19 16:37) [15]

> Desdechado  (19.12.2006 16:34:13)  [13]

Область видимости всегда надо учитывать - это догма.


 
Steep ©   (2006-12-19 16:37) [16]


> Form1.Btn_OK.caption := "OK";

Спасибо! понял

> Возможно, Btn_OK не содержит ссылку на экз. нужного компонента.

Я знаю что такое "ссылка на экз. нужного компонента"?
можно проще выражаться или с кодом сразу писать?

> Почему не знает, предположение/телепатия
> Ну тогда надо сделать узнаваемым и это просто, наприме так
>
> Btn_OK: TButton

не понял... это типа того что я написал во 2?


 
Anatoly Podgoretsky ©   (2006-12-19 16:38) [17]

> Steep  (19.12.2006 16:37:16)  [16]

Нет, это выше или рядом. Главное, что бы было в пределах видимости, к моменту обращения это должно быть известно и еще на этапе компиляции.


 
Сергей М. ©   (2006-12-19 16:39) [18]


> Я знаю что такое "ссылка на экз. нужного компонента"?


А мы тут знаем, как он , тот самый великий и могучий, конкретно ругается, какими словами ?)

Совесть-то имей)..


 
Steep ©   (2006-12-19 16:39) [19]


> А его не надо "помнить".
>
> Оно всегда перед глазами - в Инспекторе Объектов.

так у меня и инспектор не перед глазами. я думаю программу в мозгу на работе. если не знаю как что-то делать спрашиваю, либо спрашиваю если дома не получилось...
у меня ж дома инета нету..


 
Anatoly Podgoretsky ©   (2006-12-19 16:41) [20]

> Сергей М.  (19.12.2006 16:39:18)  [18]

Не многого просишь?


 
Сергей М. ©   (2006-12-19 16:41) [21]


> я думаю программу в мозгу на работе


Многозадачный ты наш)


 
Steep ©   (2006-12-19 16:43) [22]


> область видимости переменных и классов учитывать надо

пока усе видимо для всех типа publeshed (ну или типа того - токо не придирайтесь)

> Даже если в отдельном модуле, а что тебя смущает в модулях,
>  это всего лишь единица разделения монолита на куски.

просто пока не прочитал как во втором думал как он связываеться с компонентом на форме ведь он его не видит

> Нет, это выше или рядом. Главное, что бы было в пределах
> видимости, к моменту обращения это должно быть известно
> и еще на этапе компиляции.

хм. не знал. надо почитать.


 
Сергей М. ©   (2006-12-19 16:44) [23]


> Anatoly Podgoretsky ©   (19.12.06 16:41) [20]


Да самую малость, ей-ей !)

Нет ну я понимаю, что если тебя "послали", то это отложилось в памяти само по себе, мол, послали и все, а как и куда уже не столь важно)

Но "Шурик, это же не наш метод !" (с)

Это же программирование, а не махание метлой)


 
Anatoly Podgoretsky ©   (2006-12-19 16:47) [24]

> Сергей М.  (19.12.2006 16:44:23)  [23]

Не все понимают


 
Сергей М. ©   (2006-12-19 16:49) [25]


> Anatoly Podgoretsky ©   (19.12.06 16:47) [24]


А мы "железным намеком" приведем "непонимающего" в стройные ряды "понимающих" !))


 
Плохиш ©   (2006-12-19 16:49) [26]


> Сергей М. ©   (19.12.06 16:39) [18]
>
> > Я знаю что такое "ссылка на экз. нужного компонента"?
>
>
> А мы тут знаем, как он , тот самый великий и могучий, конкретно
> ругается, какими словами ?)

Ну я знаю куда и какими словами "он" его послал ;-)


 
Steep ©   (2006-12-19 16:49) [27]


> Не все понимают

особенна такие как я :)

Небольшой офф-топ
Куда обратиться не знаю нужно написать драйвер на любом языке для какого-либо устройства....


 
Anatoly Podgoretsky ©   (2006-12-19 16:50) [28]

> Steep  (19.12.2006 16:49:27)  [27]

Это в лигу сексуальных меншинств.
Может ты согласишься не на все языки?


 
Сергей М. ©   (2006-12-19 16:51) [29]


> Плохиш ©   (19.12.06 16:49) [26]


Ну и знай себе)

"Я вам принес посылку, только я вам ее не отдам" (с) Печкин

))


 
Anatoly Podgoretsky ©   (2006-12-19 16:51) [30]

> Сергей М.  (19.12.2006 16:51:29)  [29]

Злодей


 
Сергей М. ©   (2006-12-19 16:51) [31]


> Куда обратиться не знаю нужно написать драйвер на любом
> языке для какого-либо устройства


Ко мне.

Готовь ТЗ и бабки)


 
Steep ©   (2006-12-19 16:52) [32]

ну или делфи или си или асм - что лучше... (но я асм его совсем плохо знаю...)
а мой вопрос по ADOQuery никто не знает?


 
Германн ©   (2006-12-19 16:52) [33]


> Небольшой офф-топ
> Куда обратиться не знаю нужно написать драйвер на любом
> языке для какого-либо устройства....
>

Ничего себе "небольшой" :-)


 
Anatoly Podgoretsky ©   (2006-12-19 16:53) [34]

> Сергей М.  (19.12.2006 16:51:31)  [31]

А ты отвечаешь за любые языки?
Например JScript - речь конечно идет о драйвере ядра.


 
Steep ©   (2006-12-19 16:53) [35]


> Готовь ТЗ и бабки)

конечно. я сам его сделаю просто даже не знаю с чего начать...
нам просто сказали напишите -типа задание на курсач, а данных никаких...


 
Сергей М. ©   (2006-12-19 16:53) [36]


> ну или делфи или си или асм - что лучше


На Делфи, конечно же)

БДСМ потому что)


> мой вопрос по ADOQuery никто не знает?


Мы еще не телепатировали, откуда ж нам знать..)


 
Сергей М. ©   (2006-12-19 16:54) [37]


> сам его сделаю просто даже не знаю с чего начать


А что там знасть ?

С ТЗ и начинай)

Или готовь бабки - дам готовое)


 
Anatoly Podgoretsky ©   (2006-12-19 16:56) [38]

> Сергей М.  (19.12.2006 16:53:36)  [36]

> не телепатировали

Не перепутал, не телепортировали


 
Anatoly Podgoretsky ©   (2006-12-19 16:56) [39]

> Сергей М.  (19.12.2006 16:54:37)  [37]

Если он не в курсе, то цены на драйвер ядра обычно начинаются с 2000


 
Steep ©   (2006-12-19 16:57) [40]


> А ты отвечаешь за любые языки?

Таково задание я ж сам не придумываю...

> БДСМ потому что)

это что?

> Мы еще не телепатировали, откуда ж нам знать..)

Мне ответили токо нужно немного уточнить..
http://delphimaster.net/view/2-1166510525/

> С ТЗ и начинай)

Вас из дас Т3?


 
Сергей М. ©   (2006-12-19 16:57) [41]


> Anatoly Podgoretsky ©   (19.12.06 16:56) [39]


Про ядро у него ни слова, так что полный простор для творчества и демпинга)


 
Steep ©   (2006-12-19 16:58) [42]


> Если он не в курсе, то цены на драйвер ядра обычно начинаются
> с 2000

Да мне самому нужно мне пото еще защищать.. да и сам хоть поумнею...


 
Anatoly Podgoretsky ©   (2006-12-19 16:59) [43]

> Steep  (19.12.2006 16:57:40)  [40]

> Вас из дас Т3?

Приехали


 
Сергей М. ©   (2006-12-19 16:59) [44]


> Steep ©   (19.12.06 16:57) [40]



> это что?
>

Это больно и приятно одновременно))))))


> Вас из дас Т3?


Дас ист айне Техническое Задание .. на проектирование "lhfqdthf" в дан.случае


 
Anatoly Podgoretsky ©   (2006-12-19 17:00) [45]

> Steep  (19.12.2006 16:57:40)  [40]

Ты уже сам ответил, только последнее правильнее оформить параметром, а первые два динамический запрос.


 
Anatoly Podgoretsky ©   (2006-12-19 17:00) [46]

> Сергей М.  (19.12.2006 16:57:41)  [41]

Это уже лохотрон


 
Anatoly Podgoretsky ©   (2006-12-19 17:01) [47]

> Steep  (19.12.2006 16:58:42)  [42]

Если не реализовывать, то на RSDN есть примеры драйвера на Дельфи, первый обманный, а второй я до конца не видел, может тоже обманка.


 
Steep ©   (2006-12-19 17:03) [48]

Нет Технического задания!!!
Препод: Напишите драйвер на какое-либо устройство
Мы: на каком языке?
Препод: На любом (вы же какой-то там изучали)
Мы: А инфу где брать?
Препод: в инете!
.... no comment


 
Steep ©   (2006-12-19 17:04) [49]


> RSDN есть примеры драйвера на Дельфи

смотрел че-то не работает...


 
Anatoly Podgoretsky ©   (2006-12-19 17:14) [50]

> Steep  (19.12.2006 17:04:49)  [49]

Первый точно рабочий, но только не на Дельфи, как подается в статье. Это про драйвер от Эмиля, фамилию забыл.


 
Steep ©   (2006-12-19 17:19) [51]

Спасибо всем огромное!!! За помощь! И за пониманимание!
домой надо валить (у меня уж 19.20)
ща попробую курсач доделать по базам
а вопрос с драйвером остаеться...
буду рад любой помощи! если что пишите на почту


 
Сергей М. ©   (2006-12-20 08:28) [52]


> вопрос с драйвером остаеться


Идешь на wasm.ru и находишь там огромную кучу примеров asm-текстов готовых драйверов, от самых примитивных (скелетов) до вполне серьезных и функциональных. С подробными описаниями.


 
Steep ©   (2006-12-20 09:28) [53]


> Сергей М. ©

спасибо еще раз.
уже нашел этот сайт
скачал еще книгу про драйвер (жаль там масм)
нашел пример на делфи, но там драйвер совсем "голый" :) (но это не помеха - будеи изучать)

не подскажите как сделать функцию смещения цисла?
т.е.
fuction smech(chislo: integer): integer;
begin
 asm
 //здесь нужно делать смещение как-то вывести результат в result
 end;
end;

потихоньку начинаю вьезжать...


 
oxffff ©   (2006-12-20 09:57) [54]


> Steep ©   (20.12.06 09:28) [53]
>
> > Сергей М. ©
>
> спасибо еще раз.
> уже нашел этот сайт
> скачал еще книгу про драйвер (жаль там масм)
> нашел пример на делфи, но там драйвер совсем "голый" :)
> (но это не помеха - будеи изучать)
>
> не подскажите как сделать функцию смещения цисла?
> т.е.
> fuction smech(chislo: integer): integer;
> begin
>  asm
>  //здесь нужно делать смещение как-то вывести результат
> в result
>  end;
> end;
>
> потихоньку начинаю вьезжать...


Открываешь DDK,Руссиновича, Шрайбера и читаешь.


 
Сергей М. ©   (2006-12-20 10:23) [55]


> смещения цисла


Что такое "смещение цикла" ?


 
Anatoly Podgoretsky ©   (2006-12-20 10:36) [56]

> Сергей М.  (20.12.2006 10:23:55)  [55]

А может числа :-)


 
Сергей М. ©   (2006-12-20 10:40) [57]


> Anatoly Podgoretsky ©   (20.12.06 10:36) [56]


С телепатором я не дружу)


 
Anatoly Podgoretsky ©   (2006-12-20 10:46) [58]

> Сергей М.  (20.12.2006 10:40:57)  [57]

Тогда калашников


 
Плохиш ©   (2006-12-20 10:56) [59]

Интересная ветка. Спасибо, разбудили :-))


 
Steep ©   (2006-12-20 11:49) [60]


> Открываешь DDK,Руссиновича, Шрайбера и читаешь.

еще б DDK для начала достать он весит около 300 мб для XP....

> > смещения цисла
>
> Что такое "смещение цикла" ?

Смещение числа
т.е.
1110 (14) смещаем 111 получаем 7

> Тогда калашников

мне бы про само объединение с делфи т.е. возвращение  переменных


 
novill ©   (2006-12-20 12:12) [61]

> Смещение числа
> т.е.
> 1110 (14) смещаем 111 получаем 7

shr


 
Сергей М. ©   (2006-12-20 12:47) [62]


> Steep ©   (20.12.06 11:49) [60]
>
>


Это называется не "смещение числа", а поразрядный сдвиг.

см. shr


 
Steep ©   (2006-12-20 12:55) [63]

я может несовсем понятно выразился
мне в теории нужно как вернуть значении из функции использующей асм
сдвиг я бы уж нашел, но все равно спасибо!


 
Anatoly Podgoretsky ©   (2006-12-20 12:58) [64]

> Steep  (20.12.2006 12:55:03)  [63]

Определяется типом возвращаемых данных, описание есть в справке и это не зависит от того, асм или нет.


 
Сергей М. ©   (2006-12-20 13:02) [65]


> как вернуть значении из функции использующей асм


Смотря что за тип значения и смотря какое соглашение о вызове этой ф-ции использовано.


 
Anatoly Podgoretsky ©   (2006-12-20 13:05) [66]

> Сергей М.  (20.12.2006 13:02:05)  [65]

При возврате из функций соглашение об вызове не используется.


 
Сергей М. ©   (2006-12-20 13:10) [67]


> Anatoly Podgoretsky ©   (20.12.06 13:05) [66]


Как раз при возврате они и используются - соглашения при этом определяют, кто является ответственным за баланс стека.


 
oxffff ©   (2006-12-20 13:11) [68]


> Anatoly Podgoretsky ©   (20.12.06 13:05) [66]
> > Сергей М.  (20.12.2006 13:02:05)  [65]
>
> При возврате из функций соглашение об вызове не используется.
>


Не торопитесь.
Используется.
А кто стек будет очищать?
Caller или func.


 
oxffff ©   (2006-12-20 13:13) [69]


> Anatoly Podgoretsky ©   (20.12.06 13:05) [66]
> > Сергей М.  (20.12.2006 13:02:05)  [65]
>
> При возврате из функций соглашение об вызове не используется.
>


Не торопитесь.
Используется.
А кто стек будет очищать?
Caller или func.
Я имею ввиду In параметры.


 
Сергей М. ©   (2006-12-20 13:14) [70]


> Anatoly Podgoretsky ©   (20.12.06 13:05) [66]


Если ты о "стандартной" паре [edx:]eax, то на то она и "стандартная" пара для "стандартных" же соглашений) .. А если соглашение не стандартное ?


 
Steep ©   (2006-12-20 13:16) [71]

ну функция я вроде описал

fuction smech(chislo: integer): integer;
begin
 asm
 //здесь нужно делать смещение как-то вывести результат в result
 //shr F1
 end;
end;

тип integer (ведь двоичние числа не могут быть real)

как я понял остальное лучше смотреть в справке (ато вы спорите о той фигне которую нам [простым смертным] не понять, а вопрос так и остаеться нераскрытым....)


 
Сергей М. ©   (2006-12-20 13:19) [72]


> Steep ©   (20.12.06 13:16) [71]


Конкретно для данного случая это будет выглядеть так:

fuction smech(chislo: integer): integer;
asm
 shr eax, 1
end;

Только не спрашивай почему).. Все равно "простым смертным", не читавшим справку, это не понять)


 
Сергей М. ©   (2006-12-20 13:21) [73]


> тип integer (ведь двоичние числа не могут быть real)


Ерунду ты сморозил


 
Steep ©   (2006-12-20 13:31) [74]


> Только не спрашивай почему)

вот сдесь то как-раз я все и понял :)

> > тип integer (ведь двоичние числа не могут быть real)
>
>
> Ерунду ты сморозил

то есть если я вызову смещения для числа (14,5) в двоичной системе это
1110 (как и 14) (хотя может это кидаеться в доп регистр - это уж я не знаю)
то получится те же 111 (7)
или нет?


 
Anatoly Podgoretsky ©   (2006-12-20 13:32) [75]

> Сергей М.  (20.12.2006 13:10:07)  [67]

Баланс стека не имеет отношения к возврату значений.
Значения не возвращаются через стек.
Возврат значений языко независим и не зависим от примененого соглашения об вызове, он всегда одинаков.


 
Anatoly Podgoretsky ©   (2006-12-20 13:32) [76]

> oxffff  (20.12.2006 13:11:08)  [68]

Не тороплюсь, стек то при чем?


 
Anatoly Podgoretsky ©   (2006-12-20 13:33) [77]

> oxffff  (20.12.2006 13:13:09)  [69]

In параметры, а также var, out также не имею отношения к возвращаемым функциям значениям.


 
Anatoly Podgoretsky ©   (2006-12-20 13:33) [78]

> Сергей М.  (20.12.2006 13:14:10)  [70]

Читай выше


 
Anatoly Podgoretsky ©   (2006-12-20 13:35) [79]

> Steep  (20.12.2006 13:16:11)  [71]

> лучше смотреть в справке

Все остальное разговоры и не существенны, истины не имеют, а вот справка это сила.


 
Anatoly Podgoretsky ©   (2006-12-20 13:35) [80]

> Сергей М.  (20.12.2006 13:19:12)  [72]

> Все равно "простым смертным", не читавшим справку, это не понять)

Согласен


 
Anatoly Podgoretsky ©   (2006-12-20 13:35) [81]

> Сергей М.  (20.12.2006 13:21:13)  [73]

Не привыкать


 
Anatoly Podgoretsky ©   (2006-12-20 13:36) [82]

> Steep  (20.12.2006 13:31:14)  [74]

Нет


 
Сергей М. ©   (2006-12-20 13:41) [83]


> Anatoly Podgoretsky ©   (20.12.06 13:32) [75]


Да, тут D7
Но в общем случае таки [70]


 
oxffff ©   (2006-12-20 13:43) [84]

Anatoly Podgoretsky ©   (20.12.06 13:33) [77]

>Значения не возвращаются через стек.

Вы все же торопитесь.
Вот вам пример  safecall;

function abc:integer;safecall;
begin
result:=5;
end;

procedure TmainForm.Button5Click(Sender: TObject);
begin
showmessage(inttostr(abc));
end;

Убедитесь, что создается временная переменная.


 
Anatoly Podgoretsky ©   (2006-12-20 13:46) [85]

> oxffff  (20.12.2006 13:43:24)  [84]

А при чем тут создание временных переменных.


 
Сергей М. ©   (2006-12-20 13:59) [86]


> oxffff ©   (20.12.06 13:43) [84]


Ты не прав.

И в этом случае рез-т возвращается через eax.
Только вот под результатом собственно вызова в соответствии с соглашением здесь подразумевается и ожидается иное.


 
Anatoly Podgoretsky ©   (2006-12-20 14:01) [87]

> Сергей М.  (20.12.2006 13:59:26)  [86]

Результат всегда возвращается через [EDX]:EAX/AX/AL
Спорить о том что находится в EAX бессмысленно.


 
oxffff ©   (2006-12-20 14:06) [88]


> Anatoly Podgoretsky ©   (20.12.06 13:46) [85]
> > oxffff  (20.12.2006 13:43:24)  [84]
>
> А при чем тут создание временных переменных.


Результат возвращается не в регистре.
А через стек (пусть даже косвенно).

Lea eax,[ebp-$08]
push eax
call abc
..
mov eax,[ebp-$08]

А очищать кто его должен?
Согласно Calling conventions.
Здесь результат возвращен через косвенно,но через стек.

Так что [75],[76],[77],[78] это не абсолютная истина.

Поэтому

утверждение

> При возврате из функций соглашение об вызове не используется.

Кстати почему это вы его в дальнейшем переформулировали на
возврат значений из функции?

Доказано. Сергей М мы победили.

:)


 
Steep ©   (2006-12-20 14:08) [89]

Еще раз всем спасибо!
PS пора закрывать эту тему, ато трафика она ест все больше и больше.....


 
Anatoly Podgoretsky ©   (2006-12-20 14:08) [90]

> oxffff  (20.12.2006 14:06:28)  [88]

Почему потом, смотри вопрос автора в сообщение [63]


 
Сергей М. ©   (2006-12-20 14:13) [91]


> Anatoly Podgoretsky ©   (20.12.06 14:01) [87]



> Результат всегда возвращается через [EDX]:EAX/AX/AL


Еще раз - это относится к стандартным широкоизвестным и общеупотребляемым соглашениям.
Для неких иных соглашений, если таковые имеются (а почему бы и нет ? мало ли в Бразилии узкоспециализированных языковых сред и компиляторов, не обязанных придерживаться этих правил !) это не указ.

Ну это так, к слову.
К проблеме автора действительно отношения не имеет - его касается именно [EDX]:EAX/AX/AL


> Спорить о том что находится в EAX бессмысленно.


Разумеется.


 
oxffff ©   (2006-12-20 14:15) [92]


> Anatoly Podgoretsky ©   (20.12.06 14:01) [87]
> > Сергей М.  (20.12.2006 13:59:26)  [86]
>
> Результат всегда возвращается через [EDX]:EAX/AX/AL
> Спорить о том что находится в EAX бессмысленно.



> Сергей М. ©   (20.12.06 13:59) [86]
>
> > oxffff ©   (20.12.06 13:43) [84]
>
>
> Ты не прав.
>
> И в этом случае рез-т возвращается через eax.
> Только вот под результатом собственно вызова в соответствии
> с соглашением здесь подразумевается и ожидается иное.


The following conventions are used for returning function result values.

Ordinal results are returned, when possible, in a CPU register. Bytes are returned in AL, words are returned in AX, and double-words are returned in EAX.

Real results are returned in the floating-point coprocessor"s top-of-stack register (ST(0)). For function results of type Currency, the value in ST(0) is scaled by 10000. For example, the Currency value 1.234 is returned in ST(0) as 12340.

For a string, dynamic array, method pointer, or variant result, the effects are the same as if the function result were declared as an additional var parameter following the declared parameters.
In other words, the caller passes an additional 32-bit pointer that points to a variable in which to return the function result.

Int64 is returned in EDX:EAX.
Pointer, class, class-reference, and procedure-pointer results are returned in EAX.

For static-array, record, and set results, if the value occupies one byte it is returned in AL;
if the value occupies two bytes it is returned in AX; and if the value occupies four bytes it is returned in EAX.
Otherwise, the result is returned in an additional var parameter that is passed to the function after the declared parameters.

И теперь вы тоже будете утвержать,что все через EAX-EDX.

Я знаю что при safecall в eax "скрытый результат" выполнения вызова.


 
Сергей М. ©   (2006-12-20 14:18) [93]


> oxffff ©   (20.12.06 14:15) [92]


> Я знаю что при safecall в eax "скрытый результат" выполнения
> вызова.


Ну и чудесно)
Значит повода для волнений нет.


 
oxffff ©   (2006-12-20 14:48) [94]

Сергей М, вы что-то быстро сдались?

Вот пример

type
Mytype=record
a:array[1..10] of integer;
end;

.....

function abc:Mytype;stdcall;
begin
result.a[1]:=2;
end;

procedure TmainForm.Button5Click(Sender: TObject);
var a:Mytype;
begin
a:=abc;
showmessage(inttostr(a.a[1]));
end;

Возврат результата через скрытый var парамер.
Никаких вам EAX-EDX;

Что и дальше будете на своем стоять, что calling conversion не имеет отношения:
-ни к возврату из функций.
-ни к возвращаемому значению


 
Сергей М. ©   (2006-12-20 14:55) [95]


> oxffff ©   (20.12.06 14:48) [94]



> Что и дальше будете на своем стоять, что calling conversion
> не имеет отношения


Уважаемый, ты что-то перепутал)

Оное утверждал АП (с), а не я)

Я-то как раз и затеял всю эту бодягу насчет соглашений и их важной связи с соотв.вопросом автора.


 
Anatoly Podgoretsky ©   (2006-12-20 15:04) [96]

> Steep  (20.12.2006 14:08:29)  [89]

> ато трафика она ест все больше и больше.....

Это твои проблемы и тебе их разрешать, нам размер не мешает


 
Anatoly Podgoretsky ©   (2006-12-20 15:05) [97]

> Сергей М.  (20.12.2006 14:13:31)  [91]

Почему во множественном числе, в Виндоус по данному поводу одно соглашение и Борланд с этим согласен, а то как бы работали ДЛЛ


 
Anatoly Podgoretsky ©   (2006-12-20 15:08) [98]

> oxffff  (20.12.2006 14:15:32)  [92]

Немного извиняюсь, не учел реальные типы, там действительно стек FPU
Остальное через EAX или прямо результат, или указатель, на память выделеную при вызове функции.
Упустил потому что про реальные числа особо речи не стояло.


 
Anatoly Podgoretsky ©   (2006-12-20 15:10) [99]

> oxffff  (20.12.2006 14:48:34)  [94]

Да ну, ну так посмотри в CPU окне, что такое Result


 
Anatoly Podgoretsky ©   (2006-12-20 15:11) [100]

> Сергей М.  (20.12.2006 14:55:35)  [95]

А если резюмировать, то правила надо соблюдать.
На чем ты и настаивал, а что бы соблюдать надо использовать справку, читать книги, к чем у автора душа не лежит.


 
Сергей М. ©   (2006-12-20 15:14) [101]


> Anatoly Podgoretsky ©   (20.12.06 15:05) [97]


> а то как бы работали ДЛЛ


Ну ты уже и ДЛЛ приплел) ... Они уж точно ни при чем.

Некий умба-юмба-компилятор сказал стандартному PE-линкеру, мол, на вот тебе некий отн.адрес и имя/ординал точки входа, запхай его в EAT, а остальное не твоя забота. Линкеру инф-ции вполне достаточно для "запихивания".

Давай уже не будем, а ?)


 
Anatoly Podgoretsky ©   (2006-12-20 15:18) [102]

При том, что они обязаны возвращать данные через указаные регистры, включая замечание по реальным числам.


 
Сергей М. ©   (2006-12-20 15:24) [103]


> При том, что они обязаны возвращать данные через указаные
> регистры


С какого перепугу-то ?!

И хост-приложение и длл-модуль разработаны в среде умба-юмба.
Все соглашения, требуемые сист.загрузчиком  РЕ-модулей, они соблюдают.
А дальше их дело, как друг-другу передавкать параметры вызовов и получать результаты - никого кроме них это не волнует.


 
oxffff ©   (2006-12-20 15:32) [104]


> Anatoly Podgoretsky ©   (20.12.06 15:08) [98]
> > oxffff  (20.12.2006 14:15:32)  [92]
>
> Немного извиняюсь, не учел реальные типы, там действительно
> стек FPU
> Остальное через EAX или прямо результат, или указатель,
> на память выделеную при вызове функции.
> Упустил потому что про реальные числа особо речи не стояло.
>


Еще раз прочитайте

For static-array, record, and set results, if the value occupies one byte it is returned in AL;
if the value occupies two bytes it is returned in AX; and if the value occupies four bytes it is returned in EAX.

Otherwise, the result is returned in an additional var parameter that is passed to the function after the declared parameters.


>Anatoly Podgoretsky ©   (20.12.06 15:10) [99]
> oxffff  (20.12.2006 14:48:34)  [94]
>Да ну, ну так посмотри в CPU окне, что такое Result

Result, это var параметр переданный через стек.
Вы опять не согласны?
Вы посмотрите под откладчиком на логику. Что и куда.
ЕAX там совсем не причем.


 
Anatoly Podgoretsky ©   (2006-12-20 15:39) [105]

> Сергей М.  (20.12.2006 15:24:43)  [103]

Ну если ты про умба-юмба, то обсуждай это на форуме умба-юмба
А здесь у нас Wintel и Дельфи


 
Anatoly Podgoretsky ©   (2006-12-20 15:40) [106]

> oxffff  (20.12.2006 15:32:44)  [104]

Этот дополнительный параметр называется Result и находится при возврате в EAX


 
Anatoly Podgoretsky ©   (2006-12-20 15:42) [107]

> Anatoly Podgoretsky  (20.12.2006 15:40:46)  [106]

Кстати у меня никаких проблем с возвратом, хоть из Паскаль функции, хоть из АСМ функции нет, ты это рассказывай автору, у меня проблем с этим нет, абсолютно никаких. Смогу вернуть и из Фортрана, и из Пролога.


 
Anatoly Podgoretsky ©   (2006-12-20 15:43) [108]

> oxffff  (20.12.2006 14:06:28)  [88]

Это чей код и что тут делает EAX?

mov eax,[ebp-$08]


 
Anatoly Podgoretsky ©   (2006-12-20 15:44) [109]

> oxffff  (20.12.2006 14:06:28)  [88]

> Доказано. Сергей М мы победили.

Тебя победа интересует?
А я думал другое, вот и ошибаешься в людях.


 
Сергей М. ©   (2006-12-20 15:51) [110]


> Anatoly Podgoretsky ©   (20.12.06 15:39) [105]


Ну тогда и dll тут тоже всуе упомянут тобой)
В EAT прописаны всего лишь адреса точек входа, и ты это прекрасно знаешь. Ни о каких [EDX]:EAX/AX/AL там нет даже и намека - кто как хочет, тот так и получает возвращенные вызванной эксп.ф-цией результаты, на свой страх и риск)


 
oxffff ©   (2006-12-20 16:11) [111]


> Anatoly Podgoretsky ©   (20.12.06 15:40) [106]
> > oxffff  (20.12.2006 15:32:44)  [104]
>
> Этот дополнительный параметр называется Result и находится
> при возврате в EAX


Вы опять торопитесь.
Не хотите посмотреть что внутри?

Перед вызовом

lea eax,[ebp-tmpVarOffset]
push eax
call abc
..
mov eax,[ebp-tmpVarOffset]  

То что eax = ebp-tmpVarOffset после выхода не говорит о том, что это результат

Вот вам доказательство

function abc:mytype;stdcall;
var a,b,e,c,d:integer;
begin
result.a[1]:=2;
a:=5;
b:=6;
showmessage(inttostr(a*b));
end;

procedure TmainForm.Button5Click(Sender: TObject);
var a:Mytype;
begin
a:=abc;
// В ЕAX "Мусор"
showmessage(inttostr(a.a[1]));
end;

По выходу в еax совсем не то.

И что сейчас даже не согласитесь?


 
oxffff ©   (2006-12-20 16:13) [112]


> Anatoly Podgoretsky ©   (20.12.06 15:40) [106]
> > oxffff  (20.12.2006 15:32:44)  [104]
>
> Этот дополнительный параметр называется Result и находится
> при возврате в EAX


Вы опять торопитесь.
Не хотите посмотреть что внутри?

Перед вызовом

lea eax,[ebp-tmpVarOffset]
push eax
call abc
..
mov eax,[ebp-tmpVarOffset]  

То что eax = ebp-tmpVarOffset после выхода не говорит о том, что это результат

Вот вам доказательство

function abc:mytype;stdcall;
var a,b,e,c,d:integer;
begin
result.a[1]:=2;
a:=5;
b:=6;
showmessage(inttostr(a*b));
end;

procedure TmainForm.Button5Click(Sender: TObject);
var a:Mytype;
begin
a:=abc;
// В ЕAX "Мусор"
showmessage(inttostr(a.a[1]));
end;

По выходу в еax совсем не то.

И что сейчас даже не согласитесь?


 
oxffff ©   (2006-12-20 16:15) [113]


> Anatoly Podgoretsky ©   (20.12.06 15:40) [106]
> > oxffff  (20.12.2006 15:32:44)  [104]
>
> Этот дополнительный параметр называется Result и находится
> при возврате в EAX


Вы опять торопитесь.
Не хотите посмотреть что внутри?

Перед вызовом

lea eax,[ebp-tmpVarOffset]
push eax
call abc
..
mov eax,[ebp-tmpVarOffset]  

//Здесь в eax после возврата из abc, тоже что и перед вызовом abc, но это не результат

Вот вам доказательство

function abc:mytype;stdcall;
var a,b,e,c,d:integer;
begin
result.a[1]:=2;
a:=5;
b:=6;
showmessage(inttostr(a*b));
end;

procedure TmainForm.Button5Click(Sender: TObject);
var a:Mytype;
begin
a:=abc;
// В ЕAX "Мусор"
showmessage(inttostr(a.a[1]));
end;

По выходу в еax совсем не то.

И что сейчас не согласитесь?


 
oxffff ©   (2006-12-20 19:07) [114]


> Anatoly Podgoretsky ©   (20.12.06 15:44) [109]
> > oxffff  (20.12.2006 14:06:28)  [88]
>
> > Доказано. Сергей М мы победили.
>
> Тебя победа интересует?
> А я думал другое, вот и ошибаешься в людях.


Да какая победа. :(
Живым бы выйти. :)

Вы прочитали [113]?

Вы все еще на своем настаиваете?


 
Anatoly Podgoretsky ©   (2006-12-20 19:16) [115]

> oxffff  (20.12.2006 19:07:54)  [114]

А я давно, гораздо раньше интерес потерял.


 
SergP ©   (2006-12-20 19:19) [116]

> [11] Anatoly Podgoretsky ©   (19.12.06 16:32)
> > SergP  (19.12.2006 16:29:07)  [7]
>
> > Оно не знает что такое Btn_OK
>
> Почему не знает, предположение/телепатия


телепатия...
Просто не стал объяснять "правильным языком", ибо долго писать, а человек и так поймет...


 
oxffff ©   (2006-12-20 19:23) [117]


> Anatoly Podgoretsky ©   (20.12.06 19:16) [115]
> > oxffff  (20.12.2006 19:07:54)  [114]
>
> А я давно, гораздо раньше интерес потерял.


К чему?


 
Anatoly Podgoretsky ©   (2006-12-20 19:25) [118]

> oxffff  (20.12.2006 19:23:57)  [117]

К дисскуссии.


 
oxffff ©   (2006-12-20 19:27) [119]


> Anatoly Podgoretsky ©   (20.12.06 19:25) [118]
> > oxffff  (20.12.2006 19:23:57)  [117]
>
> К дисскуссии.


Посмотрите [113],
я пошел жене ужин готовить. :)
Загляну позже.


 
Anatoly Podgoretsky ©   (2006-12-20 19:32) [120]

> oxffff  (20.12.2006 19:27:59)  [119]

Не вижу смысла возвращаться к старым сообщениям.
Мне бы кто приготовил.



Страницы: 1 2 3 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.78 MB
Время: 0.017 c
2-1166675721
Marat
2006-12-21 07:35
2007.01.14
округлить число


15-1166725252
alexsis
2006-12-21 21:20
2007.01.14
Чё за фигня с этими часами??


15-1166899037
ferr
2006-12-23 21:37
2007.01.14
"Убийственный MessageBox от Мелкомягких"


2-1166901178
ezorcist
2006-12-23 22:12
2007.01.14
завершение консольног приложения


15-1166688449
Slider007
2006-12-21 11:07
2007.01.14
С днем рождения ! 21 декабря





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский