powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
25 сообщений из 54, страница 2 из 3
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939753
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич
Ясно-понятно. Могли бы и сделать разные названия для этого, типа Extended64, NativeInt64
Extended такой корявый из-за оптимизации скорости работы с железом во времена когда это было очень важно. Преданья старины глубокой в общем.

Не используй его без необходимости и все. Благо дело он почти никогда и не нужен.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939755
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

NativeInt как раз и ввели для того, чтобы иметь целочисленный тип соответствующий размеру указателя. Это важно, когда используется адресная арифметика. С Extended ещё проще - добавили директиву $EXTENDEDCOMPATIBILITY . И вообще RTFM.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939825
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939830
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://docwiki.embarcadero.com/RADStudio/Rio/en/Converting_32-bit_Delphi_Applications_to_64-bit_Windows

Короче, читайте справку, там еще много интересного...
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939831
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Extended - это аппаратно-зависимый тип, такой же как Pointer или Integer.
Single, Double, Int64 - это аппаратно-независимые типы.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939938
Реализовывал всегда сокетное общение между приложений.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939941
Между прочим, на все указатели надо использовать NativeUInt. И никакой NativeInt. Адрес не может иметь отрицательный адрес. Но мы можем не попасть в объём типа, и улететь в трубу.

Так что, только NativeUInt


Но а если мы говорим о таком общение. То мы должны зафиксировать тип на нужном диапазоне, для общения разных разрядностей.

Ну или же использовать сокеты, и никому не фифать мозг разрядностью.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939945
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939950
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
Так что, только NativeUInt

В операциях сравнения, если они нужны. Для арифметики Int использовать проще т.к. избавляет от кучи приведений знаковых типов.

ВсеРазумный
Ну или же использовать сокеты, и никому не фифать мозг разрядностью.

Няшка, как сокеты тебя избавят от проблемы ТС?
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939970
Kazantsev Alexey

В операциях сравнения, если они нужны. Для арифметики Int использовать проще т.к. избавляет от кучи приведений знаковых типов.


За то приведёт к большим проблемам адресации.

Kazantsev Alexey

***, как сокеты тебя избавят от проблемы ТС?


Один клиент, другой сервер. Никто никому не мешает быть ЛГБТ двух полым. Каждый слушает приходящие команды и выполняет что - то.

Обычный get\post, только для приложений в виде json к примеру. Это огромное решение, которое позволяет передавать данные так, как хочет человек передать. Независимо от количество данных.

Ну и к тому - же, в пару строк кода ещё и реализуется вебхост прослушивания ip. Мы в браузере можем открыть интересующий адрес, и из программы отобразить всю нужную нам информацию. Реализовав общую админ панель, в закрытом обществе
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939972
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev Alexey
Няшка, как сокеты тебя избавят от проблемы ТС?

ВсеРазумный
Один клиент, другой сервер.


Няшык, у ТС типы данных зависят от разрядности. Exteded в х32 и в х64 - разные, ты хоть как передавай.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939975
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
За то приведёт к большим проблемам адресации.

Не приведёт. Учи матчасть.

ВсеРазумный
Обычный get\post, только для приложений в виде json к примеру.

Ты бы уже определился, ты сокетами проблему разрядности решаешь или использованием механизма сериализации

ВсеРазумный
Мы в браузере можем открыть интересующий адрес, и из программы отобразить всю нужную нам информацию. Реализовав общую админ панель, в закрытом обществе

Закусывать надо (с)
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939976
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъExteded в х32 и в х64 - разные, ты хоть как передавай.

Если ты не обратил внимания, он их собирается текстом передавать. В JSON.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939980
Kazantsev Alexey
ВсеРазумный
За то приведёт к большим проблемам адресации.

Не приведёт. Учи матчасть.


То есть ты уверяешь, что выделенное адресное пространство всегда в 100% из 100% поместиться в объём int ? И не уйдёт в отрицательный диапазон.

Kazantsev Alexey


Ты бы уже определился, ты сокетами проблему разрядности решаешь или использованием механизма сериализации


Для непонятливых

- Оно решает всё.
- Приносит кучу плюшек и удобств.

Неужели так приятно жить в каменном веке, бросаться в друг друга handle-ом и что - то там пытаться выковыривать считывая лагучим пост обработчиком, который ещё опрокинет через кучу обработчиков.


Kazantsev Alexey
Закусывать надо (с)


Это уже от того, что можно. Если это общая сеть, то и на телефоне получишь общий доступ.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939983
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
ъъъъъExteded в х32 и в х64 - разные, ты хоть как передавай.

Если ты не обратил внимания, он их собирается текстом передавать. В JSON.
Тогда не только Extended, но Double может быть покоцан на этапе преобразования в JSON и обратно.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939984
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...если, конечно, не передавать данные в "точном" представлении - в виде строк с шестнадцатеричными или двоичными или ещё какими-либо значениями.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939986
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
То есть ты уверяешь, что выделенное адресное пространство всегда в 100% из 100% поместиться в объём int ? И не уйдёт в отрицательный диапазон.

Следи за руками:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
uses
  System.SysUtils;

var
 i : Integer;
 c : Cardinal;
begin

 i := high(Integer);
 c := i;

 c := c + 1024;
 i := i + 1024;

 writeLn(Format('%p (%s)', [Pointer(c), c.ToString]));
 writeLn(Format('%p (%s)', [Pointer(i), i.ToString]));

 readln;

end.



ВсеРазумный
- Оно решает всё.
- Приносит кучу плюшек и удобств.

Так сокеты или сериализация? Ну?
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939989
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если алгоритм вычислительный с накоплением ошибки, то замена Extended (настоящего, десятибайтового) на double может сказаться на результатах: настоящий Extended не только длиннее, но и считает немного по другому (не IEEE 754).
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939995
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010
Если алгоритм вычислительный с накоплением ошибки, то замена Extended (настоящего, десятибайтового) на double может сказаться на результатах: настоящий Extended не только длиннее, но и считает немного по другому (не IEEE 754).

Если вам надо точно, может стоит перейти на https://github.com/rvelthuis/DelphiBigNumbers ?
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39939996
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС вообще в Single считает, о чём вы спорите?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39940001
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

ТС вообще в Single считает, о чём вы спорите?..

Откуда известно что и как считает ТС?
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39940003
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, у него флоат точность по максимуму
Андрей Игоревич
Код: pascal
1.
2.
3.
TFluxPipe = record   //передача сообщение в 3DViewer
 CutOff    :Extended;
 Time      :Extended;



Он же ж секретный физик.
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39940041
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northenerОткуда известно что и как считает ТС?

Код выше по топику.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39940048
Dimitry Sibiryakov

ТС вообще в Single считает, о чём вы спорите?..

Считаю я в Extended, в Single я просто вывожу результаты, и то вынужденно, так как пространственные распределения результатов это почти всегда огромные массивы занимающие гигабайты(иногда даже десятки) в памяти, потому вывожу/передаю в Single, так как для визуализации точности более чем хватает.

ъъъъъ


Эх, ...гдеб столько времени взять, чтоб всё читать, при этом ещё работать и жить. Я вот сейчас Питон активно осваиваю, так как для некоторых моих задач он удобнее, а ещё по физике и прочности куча книг лежит в ожидании прочтения... Ну будет время может почитаю...
...
Рейтинг: 0 / 0
SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
    #39940082
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Следи за руками:


К слову:
Код: pascal
1.
2.
 c := c + 1024; // OK
 i := i + 1024; // "Integer overflow"
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SendMessage и WM_COPYDATA между 32 и 64 разрядными приложениями.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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