![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||||
|
||||||
![]() Доброго времени суток.
Есть библиотека dl, имеется к ней header. Код:
Код:
Функция сама память не выделяет, в мануале написано выделять вручную 121 байт. Код:
В результате у меня строка получается обрезанная спереди неизвестно на сколько байт, но обрезанная это точно. Что не правильно делаю? |
#2
|
||||
|
||||
![]() Похоже не хватает функциональной пары GetMem...FreeMem или может нужно передавать указатель^ на переменную с последующей SetLength, а может просто сменить её тип на pchar...
Вот пример на основе считывания инфы из файла Код:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
||||
|
||||
![]() Код:
Пишу программы за еду. __________________ |
#4
|
||||||
|
||||||
![]() Код:
Работает идентично моему коду. Потом я переключился в WIN32 и теперь все время Access violation, а под 64 бит пол строки читает ![]() DLL соответственно у меня есть x86 и x64 Что-то не то с памятью. Код:
Такое впечатление, что функция портит память. При том что другие функции которые выделяют память самостоятельно работают отлично, например вот такая: Код:
У кого есть какие мысли? |
#5
|
||||
|
||||
![]() Всем спасибо. Решение оказалось таким простым, что я его не заметил сразу.
Delphi самостоятельно передает указатель вместо значения если в параметре функции указано ключевое слово var. По этому если памятью нужно управлять самостоятельно то передаем нулевой элемент массива. Код:
Функция импортирована так Код:
|
#6
|
||||||
|
||||||
![]() >Функция
Код:
Код:
Код:
|