|
|
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Имею Delphi 10.3.3. (64-bit) Создал DLL - подключил в 64-bit Excel - передал англицкую строку (даже не кирилица) - получил в DLL ShowMessage - китайско-шумерскую клинопись (скрин приложен) Ранее имел Имею Delphi 7 (32-bit) Создал DLL - подключил в 32-bit Excel - передал любую строку - получил в DLL ShowMessage - скрепно-родные символы Подскажите плис где и что необходимо подстроить Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 17:24 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
начать с того, что посмотреть, ЧТО приходит в длл. Не спешить сразу показывать это строкой, а как минимум глянуть в виде байт-массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 17:36 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
Vizit0r начать с того, что посмотреть, ЧТО приходит в длл. Не спешить сразу показывать это строкой, а как минимум глянуть в виде байт-массива. Не совсем Вас понял, имеете в виду Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Уточните Ваше предложение на примере Если смотреть строкой, то отправил латиницу СРАЗУ получил "китаицу" Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 18:02 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
1. как именно описан вызов dll в excel-е? 2. какую строку передает: ansi? unicode? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 18:08 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
Скорее всего функция неправильно описана. Надо PAnsiChar вместо PChar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 18:33 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
asutp2 1. как именно описан вызов dll в excel-е? 2. какую строку передает: ansi? unicode? Вот полная сигнатура функций Описания в VBA Excel Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Описания в Delphi DLL Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 2. какую строку передает: ansi? unicode? Полагаю Excel дает Ansi Win-1251 Delphi принимает Unicode Как это проверить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 18:39 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
HOME_XКак это проверить ? В документации прочитать?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 18:41 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
Похоже что параметр должен быть не String а AnsiString ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 18:51 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
vkorshun, Нет проблем изменю.. попробую Крокозябрит ЛАТИНИЦУ, она вложена в процессор, поясните почему Возможно необходимо донастроить Delphi 10.3.3 (недавно перешел не все знаю ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 18:58 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
HOME_XКрокозябрит ЛАТИНИЦУ, она вложена в процессор, поясните почему https://ru.wikipedia.org/wiki/Юникод Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 19:08 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
vkorshun Похоже что параметр должен быть не String а AnsiString Именно так - Вы абсолютно верны Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 19:26 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov HOME_XКрокозябрит ЛАТИНИЦУ, она вложена в процессор, поясните почему https://ru.wikipedia.org/wiki/Юникод Принято изучу - не сталкивался с искажением латиницы ранее Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 19:29 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
vkorshun Похоже что параметр должен быть не String а AnsiString А что, эксель знает про дельфовые ансистринги? Может всё-таки PAnsiChar? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 19:37 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
А вообще плохая идея писать такую DLL. В DLL лучше использовать PChar, PAnsiChar вместо String, AnsiString и в данном примере наверно не плохо бы было передать Handle основного окна и внутри функции присвоить его Application.Handle. Конечно если ShowMessage реально нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 19:53 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
Подключи общий менеджер памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2020, 23:40 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, К экселю? Забористая идея. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2020, 00:32 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
vkorshun, alekcvp А вообще плохая идея писать такую DLL. В DLL лучше использовать PChar, PAnsiChar вместо String, AnsiString и в данном примере наверно не плохо бы было передать Handle основного окна и внутри функции присвоить его Application.Handle. Конечно если ShowMessage реально нужен. В целом все работает Кирилица тоже передается без искажений ShowMessage - в абсолюте не нужен (так делаю отладку - а как иначе при запуске с другого приложения, если сталкивались подскажите) Насчет указателя я не против Как сопоставить типа aList: AnsiString = ByVal L As String aList: PAnsiChar = ????????? Private Declare PtrSafe Function Create_AddSpan Lib "Scripts.dll" (ByVal F As String, ByVal L As String , ByVal K As Variant, ByVal B As Variant, ByVal H As Variant, ByRef Q As Variant, ByRef R As Variant) As Integer function Create_AddSpan(aFile: String; aList: AnsiString ; aKind: OleVariant; aBars: OleVariant; aHandle: OleVariant; var aSql: OleVariant; var aRecordSet: OleVariant): Integer; Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2020, 12:08 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
HOME_X, Тут что-то похожее: https://stackoverflow.com/questions/17789091/pass-string-from-delphi-dll-to-net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2020, 12:14 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
HOME_X так делаю отладку - а как иначе при запуске с другого приложения, если сталкивались подскажите Код: plaintext 1. или в код добавь Код: pascal 1. 2. и потом Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2020, 18:57 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
DarkMaster HOME_X, Тут что-то похожее: https://stackoverflow.com/questions/17789091/pass-string-from-delphi-dll-to-net Да - спасибо за пример vkorshun, таки Вы правы заменил на PChar - стало устойчиво работать Под словом устойчиво понимаю следующий момент В тело процедуры входит, стрингу показывает нормально, алгоритм выполняется целяком и достоверно.Результат удовлетворяет. Но при выходе из процедуры "сваливается" Пока не заменил тип параметра на PChar P.S. До конца пока не отладил - мне необходимо передать длинную строку...> 255 символов но думаю PChar справиться Спасибо P.S.S. это переделка библиотеки с 32-bit на 64-bit Под 32 bit все работало в представленной выше сигнатуре года 4 ????!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2020, 19:04 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
Bred eFeM HOME_X так делаю отладку - а как иначе при запуске с другого приложения, если сталкивались подскажите Код: plaintext 1. или в код добавь Код: pascal 1. 2. и потом Код: plaintext Насчет MsgBox - вопрос красен .... Насчет Run -> Parameters -> Host Application -> например excel.exe Не все понятно Последовательность запуска 1.созданная DLL лежит в Path - каталоге 2.на нее из Excel сделана ссылка в виде надстройки (XLA -файла) - Декларация Private Declare PtrSafe Function Create_AddSpan Lib "Scripts.dll" (ByVal F As String, ByVal L As String, ByVal K As Variant, ByVal B As Variant, ByVal H As Variant, ByRef Q As Variant, ByRef R As Variant) As Integer - Обертка запуска из ячейки Excel Function SetQuery(ParamArray Parameters() As Variant) As String 3. работа DLL - возвращает Recordset -- здесь надо включить отладчик и отследить возможность передачи данных из одной платформы VBA на другую Delphi (это самый скользкий момент) -- работа внутри DLL - у меня почти всегда стабильна -- отследить обратный процесс из Delphi типы вернуть в VBA (это второй скользкий момент) Это можно сделать через отладчик Delphi ? Уверены ? Пробывали ? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2020, 19:19 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
HOME_X, начал писать ответ, но потом...Полагаю Excel дает Ansi Win-1251 Delphi принимает UnicodeИзучить матчасть. Если совсем лень - пиши WideString. Как это проверить ?"Attach to Process" не проблема? Тогда бери и смотри - как оно там. -- работа внутри DLL - у меня почти всегда стабильнаТак почти, всегда или стабильна? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2020, 20:41 |
|
||
|
Delphi 10.3.3. - String -> Китаица
|
|||
|---|---|---|---|
|
#18+
Bred eFeM Изучить матчасть. Если совсем лень - пиши WideString. По-моему надо писать AnsiString или PAnsiChar - в VBA ansi строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2020, 21:21 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39944021&tid=2038412]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 470ms |

| 0 / 0 |
