|
|
|
Передача строк в COM-DLL
|
|||
|---|---|---|---|
|
#18+
Всех с наступившим! Проблема возможно классическая и, вероятно, имеет простое решение, которое, надеюсь, подскажите. Имеем COM-Obj засунутый в DLL и приложение. Все написано на Delphi. Причем Сервер на D10.3, на D2007. Вот реализуемый интерфейс Код: pascal 1. 2. 3. 4. 5. 6. Так вот, строки по следующей функции не доходят. Код: pascal 1. 2. Но, стоит этот COM вызвать из клиента написанного на D10.3 и все OK. Я понимаю, что проблема кроется в переходе Delphi на Unicode с версии D2009, но не понимаю какие конвертации применить, чтоб эту задачку решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 17:32 |
|
||
|
Передача строк в COM-DLL
|
|||
|---|---|---|---|
|
#18+
sdsfy Так вот, строки по следующей функции не доходят. Не хотите ли показать, как их посылаете? P.S. Вангую, что надо заменить string на AnsiString. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 17:58 |
|
||
|
Передача строк в COM-DLL
|
|||
|---|---|---|---|
|
#18+
sdsfyне понимаю какие конвертации применить, чтоб эту задачку решить. Заменить в интерфейсе PChar на OleStr. Пересобрать сервер и клиент. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 18:09 |
|
||
|
Передача строк в COM-DLL
|
|||
|---|---|---|---|
|
#18+
softwarer, вот это самое из клиента на d10.3, до COM доходит все, и так и этак засунутое в качестве параметра. Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:04 |
|
||
|
Передача строк в COM-DLL
|
|||
|---|---|---|---|
|
#18+
sdsfy вот это самое из клиента на d10.3, до COM доходит все, и так и этак засунутое в качестве параметра Не удивительно. Потому что там Edit.Text имеет тип AnsiString, и все эти в пользу бедных приведения указателей ничего не меняют. P.S. Не пробовал, но на глаз Дмитрий выше дал хороший совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:22 |
|
||
|
Передача строк в COM-DLL
|
|||
|---|---|---|---|
|
#18+
softwarer sdsfy вот это самое из клиента на d10.3, до COM доходит все, и так и этак засунутое в качестве параметра Не удивительно. Потому что там Edit.Text имеет тип AnsiString, и все эти в пользу бедных приведения указателей ничего не меняют. P.S. Не пробовал, но на глаз Дмитрий выше дал хороший совет. Возможно, стоит попробовать. Но как понимаю, PChar передает указатель на строку, которая должна как-то просто перекодироваться видимо в UNICODE на стороне COM. Но вот как? Попытки присвоить переменным типа string с приведением типов не работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:29 |
|
||
|
Передача строк в COM-DLL
|
|||
|---|---|---|---|
|
#18+
sdsfy, Проблема у тебя в том, что до D2009 PChar = PAnsiChar, а начиная с D2009 PChar = PWideChar. Поэтому решения может быть два: 1. Заменить PChar на конкретный тип: PAnsiChar или PWideChar. 2. Заменить PChar на тип WideString (OleStr это псевдоним данного типа). Это системный строковый тип. Второй вариант лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:38 |
|
||
|
Передача строк в COM-DLL
|
|||
|---|---|---|---|
|
#18+
sdsfy Но как понимаю, PChar передает указатель на строку PChar передаёт указатель, про который Вы поклялись мамой, что это указатель на 0-терминированную последовательность char-ов. При этом у Вас сервер и клиент понимают под char-ом разные вещи, а Вы плохо ориентируетесь в происходящем, шаманите наугад и Ваша клятва оказывается ложной. Ещё раз - Дима дал хороший совет. Обойдитесь без ненужных сложностей, используйте стабильный тип данных, одинаковый для любого клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:39 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40033210&tid=2037736]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 546ms |

| 0 / 0 |
