Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
ф-ция из dll возвращает строку, вернее указатель на нее (тип PChar), но при этом непонятно почему иногда обрезается 2 последних символа, причем предпоследний заменяется на 0. Может кто сталкивался с такой проблемой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 14:15 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
А код можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 14:58 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
обявление в вызывающей программе: var function SumPropis(const sum, razdelitel:PChar):PChar; stdcall; external 'sumtoint.dll'; вызов: var Plat_sum:string; sim: PChar; StrPCopy(sum,Plat_sum); ParValue:=(SumPropis(sum,',')); описание в dll: function SumPropis(const sum_, razdelitel_:PChar):PChar; stdcall; var out1:array[1..3] of string; kop,kop1:string; begin ... Result:=PChar(Trim(out1[3]+' '+out1[2]+' '+out1[1]+' '+kop+' '+kop1)); end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 15:05 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
SumPropis(sum,',') если это 6,7 то тут может быть глюк... тут недавно было осуждение этого... s:=','; SumPropis(sum,PChar(s))) kop или kop не содержат нулевых символов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 15:21 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
попробовал s:=','; SumPropis(sum,PChar(s))) не работает, в смысле то же самое получается kop или kop1 могут быть равны '' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 15:39 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
>>ParValue:=(SumPropis(sum,',')); ParValue у тебя что ? PChar ?, String ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 15:41 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
ParValue: Variant ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 16:08 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
Не видно, где выделяется память для параметра sum который pchar, как это требуется хелпом по StrPCopy. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 18:37 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
Dankov к твоему ответу хочется добавить что не видно где выделяется память под результат... Автору топика хочется рекомендовать полистать теорию... как работать с dll... в частности из под дельфи. Здесь конечно можно ответить, но боюсь потом появится ряд новых ошибок.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 03:26 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
>Не видно, где выделяется память для параметра sum который pchar, как это требуется хелпом по StrPCopy. и где здесь написано, что надо выделять память: StrPCopy copies a Pascal-type string Source into a null-terminated string Dest. It returns a pointer to Dest. StrPCopy does not perform any length checking. The destination buffer must have room for at least Length(Source)+1 characters. >Автору топика хочется рекомендовать полистать теорию... как работать с dll... в частности из под дельфи А можно какую-нибудь ссылочку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 08:39 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
>> и где здесь написано, что надо выделять память: StrPCopy copies a Pascal-type string Source into a null-terminated string Dest. It returns a pointer to Dest. StrPCopy does not perform any length checking. The destination buffer must have room for at least Length(Source)+1 characters. eNose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 09:13 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
SergeyNew боюсь не получится..... я частисно в книгах читал, частично на опыте, частично в хелпе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 09:29 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
автор писал:и где здесь написано, что надо выделять память: StrPCopy copies a Pascal-type string Source into a null-terminated string Dest. It returns a pointer to Dest. StrPCopy does not perform any length checking. The destination buffer must have room for at least Length(Source)+1 characters. Это написано в последней строчке. По-русски будет так: Буфер назначения обязан иметь пространство по крайней мере как длина строки Source и еще один байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 10:07 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
пробовал сейчас, выделял память и под "sum" и под результат, ничего не изменилось. var res, sum: PChar; ParValue: Variant; try res:=allocmem(100); //результат sum:=allocmem(18); //передавaемый параметр StrPCopy(sum,Plat_sum); StrPCopy(r,SumPropis(sum,',')); ParValue:=StrPas(r); finally FreeMem(r); freemem(sum_); end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 11:58 |
|
||
|
проблема с PChar в dll
|
|||
|---|---|---|---|
|
#18+
Не, все не так. Посмотри, как возвращается имя компьютера через GetComputerName в модуле Windows и сделай также (не через возврат результата, а через параметры). Внутри DLL при этом заполняется предоставленный параметрами буфер без изменения указателя - там можно применить процедуру Move для копирования симовлов из обычного string в этот буфер pchar. А вот как оно в дельфи вызывается: function GetCompName:string; var sz:dword; begin sz:=MAX_COMPUTERNAME_LENGTH + 1; SetLength(result, sz); Win32Check(GetComputerName(pchar(result),sz)); SetLength(result, sz); end; Для входных параметров у тебя вообще ничего не нужно (никаких StrPCopy). Преобразование pchar(var_str) отлично работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 12:48 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32327567&tid=2115842]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 269ms |
| total: | 445ms |

| 0 / 0 |
