Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / delphi object как это выглядит в с++ / 25 сообщений из 31, страница 1 из 2
11.05.2015, 16:05
    #38955788
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
как в с++ будет выглядеть такой код?
если можете покажите как и в с#.

нужно заранее знать о совместимости разрабатываемой модульной системы

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
type
 TMyObject = class(Tobject)
 procedure calc;
 end;

procedure test(p:pointer);
begin
 TMyObject(p).calc;
end;

//где-то далеко в коде
begin
 MyObject := TMyObject.Create;
 test(@MyObject);
end;
...
Рейтинг: 0 / 0
11.05.2015, 16:22
    #38955797
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
crauseкак в с++ будет выглядеть такой код?
Хреново будет выглядеть. Используй интерфейсы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.05.2015, 18:44
    #38955881
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
немного перефразирую вопрос. с++ или c# сможет также присвоить к своему же объекту указатель на объект Pointer или Farproc???
...
Рейтинг: 0 / 0
11.05.2015, 18:51
    #38955882
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
C++ может присвоить любой указатель любому другому указателю. Но двоичная структура С++
объекта и Delpi объекта (в частности VMT) совпасть не обязаны. Двоичные структуры
интерфейсов совпадают гарантированно. Они, собственно, затем и задумывались.

PS: У FPC всё ещё хуже, так что и интерфейсы в половине случаев несовместимы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.05.2015, 19:13
    #38955898
YesSql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
crauseнемного перефразирую вопрос. с++ или c# сможет также присвоить к своему же объекту указатель на объект Pointer или Farproc???

Можно. Через dynamic_cast или static_cast или reinterpret_cast. Зависит от уровня авантюризма в крови
.
...
Рейтинг: 0 / 0
11.05.2015, 19:26
    #38955904
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
модульная система будет только хранить описание и указатели на функции, само исполнение этих функций будет лежать на этих же модулях.
...
Рейтинг: 0 / 0
11.05.2015, 19:28
    #38955905
YesSql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
YesSqlcrauseнемного перефразирую вопрос. с++ или c# сможет также присвоить к своему же объекту указатель на объект Pointer или Farproc???

Можно. Через dynamic_cast или static_cast или reinterpret_cast. Зависит от уровня авантюризма в крови
.

Ой. я наверное не понял вопрос. Вопрос был "как выглядит код" или "как передать указатель на паскалевский обьект в модуль на С++" ?
...
Рейтинг: 0 / 0
11.05.2015, 19:36
    #38955907
YesSql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
crauseмодульная система будет только хранить описание и указатели на функции, само исполнение этих функций будет лежать на этих же модулях.
a..
Код: plaintext
1.
2.
3.
4.
void test(void *ptr)
{
    static_cast<TMyObject *>(ptr)->calc();
}
...
Рейтинг: 0 / 0
11.05.2015, 20:22
    #38955921
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
YesSql, а разве static_cast к void * допустим? reinterpret_cast или C-style, имхо
...
Рейтинг: 0 / 0
11.05.2015, 21:12
    #38955938
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
спасибо, радует то что это можно
...
Рейтинг: 0 / 0
11.05.2015, 21:17
    #38955939
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
crauseспасибо, радует то что это можно

без COM я бы не рискнул связывать delphi/c++/c#
...
Рейтинг: 0 / 0
11.05.2015, 21:29
    #38955941
YesSql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
egorychYesSql, а разве static_cast к void * допустим? reinterpret_cast или C-style, имхо
допустим. и туда и обратно. reinterpret_cast в данном случае overkill
.
...
Рейтинг: 0 / 0
11.05.2015, 21:55
    #38955946
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
YesSqlдопустим. и туда и обратно. reinterpret_cast в данном случае overkill.кто-то на меня ругался при статик-касте воида, стройка какая-то из старых, по моему, но спорить я не буду, спасибо за ответ ))
...
Рейтинг: 0 / 0
12.05.2015, 09:53
    #38956104
YesSql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
egorychYesSqlдопустим. и туда и обратно. reinterpret_cast в данном случае overkill.кто-то на меня ругался при статик-касте воида, стройка какая-то из старых, по моему, но спорить я не буду, спасибо за ответ ))

reinterpret_cast нужен бы был если бы ТС использовал хандлер например типа u_int64_t

как-то так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
u_int64_t   init_module()
{
     return reinterpret_cast<u_int64_t>(new TMyObject());
}

void test(u_int64_t handle)
{
      reinterpret_cast<TMyObject *>(handle)->calc();
}

void release_module(u_int64_t handle)
{
    delete reinterpret_cast<TMyObject *>(handle);
}
...
Рейтинг: 0 / 0
12.05.2015, 10:41
    #38956147
YesSql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
как Изопропил правильно заметил у ТС еще остаются вопросы передачи параметров.
...
Рейтинг: 0 / 0
21.05.2015, 15:45
    #38965415
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
В delphi есть такая процедура

Код: pascal
1.
2.
3.
4.
5.
6.
TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object;
...
property OnMessage: TMessageEvent read FOnMessage write FOnMessage;
.....
//находиться тут
Application.OnMessage



как в с++ с# обрабатываются ссобщения? так же? procedure (var Msg: TMsg; var Handled: Boolean) of object;
...
Рейтинг: 0 / 0
21.05.2015, 16:30
    #38965503
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
crauseкак в с++ с# обрабатываются ссобщения?
Никак. А "of object" - вообще нету.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.05.2015, 18:11
    #38965679
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 class TMyObject : public Tobject 
 {
   void calc ();
 };

void test( void* p )
{
 TMyObject( p ).calc();
}

//где-то далеко в коде
{
 TMyObject MyObject;
 test(&MyObject);
}
...
Рейтинг: 0 / 0
21.05.2015, 18:14
    #38965683
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
Изопропилcrauseспасибо, радует то что это можно

без COM я бы не рискнул связывать delphi/c++/c#

Не, связывается. Но только на уровне голого С, классы -- отдельно там, отдельно там. (это всё без C#, про него -- не знаю).
...
Рейтинг: 0 / 0
21.05.2015, 18:37
    #38965698
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
Ну если _только_ Borland C++ Builder и Delphi....

Насколько я помню (работал с ним в конце 90-х), в Builder'е в один проект можно было и .CPP и .PAS файлы запихивать. Насколько совместимы классы фиг знает. Но, наверное, раз одни и те же компоненты можно использовать и оттуда (PAS) и отсюда (CPP) - скорее всего совместимы. Нужно проверять.
...
Рейтинг: 0 / 0
21.05.2015, 18:42
    #38965701
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
Leonid KudryavtsevНасколько совместимы классы фиг знает.
Между собой-то они совместимы абсолютно. Вот только с кем-то другим их сопрячь - весьма
нетривиальный процесс.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.05.2015, 18:46
    #38965705
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
MasterZivНе, связывается. Но только на уровне голого С, классы -- отдельно там, отдельно там. (это всё без C#, про него -- не знаю).
Через COM связываются все выше перечисленные. и чистый C в том числе
...
Рейтинг: 0 / 0
21.05.2015, 19:08
    #38965721
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
YesSqlcrauseмодульная система будет только хранить описание и указатели на функции, само исполнение этих функций будет лежать на этих же модулях.
a..
Код: plaintext
1.
2.
3.
4.
void test(void *ptr)
{
    static_cast<TMyObject *>(ptr)->calc();
}



это я так понимаю не в с++ builder?
...
Рейтинг: 0 / 0
21.05.2015, 19:09
    #38965722
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
тут по хорошему нужно было бы новую тему создать, но продолжу в этой.

в данном контексте, под С++ имею ввиду все что с ним связано кроме (С++ Builder)
знатоки, пожалуйста расскажите следующее.

под №
1 - С++
2 - С#

в Delphi есть HWND окна
1 - True
2 - True

в Delphi есть TApplication
1 - False
2 - False
* есть какая то замена в этих ЯП?

в Delphi есть Application.Handle (это Handle приложения никак не окна)
1 - ?
2 - ?
* какая альтернатива в других ЯП?

в Delphi есть процедура обработки оконных сообщений, я ее приводил выше, покажите общую процедуру для окна в других ЯП?
...
Рейтинг: 0 / 0
21.05.2015, 19:24
    #38965727
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
delphi object как это выглядит в с++
crauseв Delphi есть TApplication
Строго говоря - нету. TApplication это класс VCL, у которой с Delphi (как языком и
компилятором) только одна связь - VCL на Delphi написана. И всё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / delphi object как это выглядит в с++ / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]