Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2010, 09:12   #1
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
Вопрос __ThisCall в Delphi?

Что можно применить за место __ThisCall в Дельфи?
VintProg вне форума Ответить с цитированием
Старый 31.08.2010, 09:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А в каком контексте ты этот __ThisCall увидел?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.08.2010, 09:21   #3
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
А в каком контексте ты этот __ThisCall увидел?
Microsoft Visual c++.

Есть такая библиотека и там функции экспортены __ThisCall, и как их использовать в Дельфи, если надо правильно по порядку бередать парамметры.
VintProg вне форума Ответить с цитированием
Старый 31.08.2010, 13:49   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Никак.

В Delphi нет аналога. ThisCall - это родное внутреннее соглашение вызова. Типа register в Delphi (аналога которому в других языках тоже нет; окей, кроме C++ Builder-а). Вызвать родным путём вы сможете его только из MS VC.

У вас три варианта:
- вызывать процедуру на ассемблере, реконструируя поведение thiscall.
- написать на MSVC DLL загрушку-переходник с thiscall на stdcall.
- (самый нормальный) изменить библиотеку так, чтобы она изначально использовала stdcall.

Ссылки для чтения:
http://www.transl-gunsmoker.ru/2008/12/3.html
http://msdn.microsoft.com/en-us/libr...bw(VS.71).aspx
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 31.08.2010, 15:01   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GunSmoker, register=fastcall как показала практика.

а выход через асм(можно переходник юзать)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 31.08.2010, 15:16   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
GunSmoker, register=fastcall как показала практика.
В каком месте? fastcall использует ECX и EDX. register использует EAX, EDX, ECX.

Это не говоря уже про передачу параметров через стек со-процессора у register.

Да, совсем одно и то же, ага.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 01.09.2010, 07:29   #7
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Так кого слушать?
VintProg вне форума Ответить с цитированием
Старый 01.09.2010, 08:22   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
VintProg
Слушай меня - Старайся не соединять проекты с такими разнобоями.
Либо же на ассемблерных вставках дописывай совмещение этих соглашений.
Для чего тебе это нужно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.09.2010, 08:49   #9
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
Слушай меня - Старайся не соединять проекты с такими разнобоями.
Да по любому дельфи умеет так делать.
VintProg вне форума Ответить с цитированием
Старый 01.09.2010, 09:08   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Полюбому. Но ты ТЗ не раскрыл, как можно понять что у тебя происходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi Верчик Помощь студентам 9 02.03.2009 17:46
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27