Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];

Вниз

Invalid pointer operation   Найти похожие ветки 

 
sergnnn   (2007-09-26 14:20) [0]

Уже голову сломал. Что это может быть?

Внутри простенького собственного класса, есть TStringList, который я создаю в Create своего класса. А потом хочу в одном месте после работы очистить этот лист, делаю StringList.Clear - получаю ошибку Invalid pointer operation.

Для теста заменил очищение на ShowMessage(StringList.GetText) - все ок, показывает данные.

Куда мне копать?


 
DVM ©   (2007-09-26 14:22) [1]


> Куда мне копать?

код давай


 
Ega23 ©   (2007-09-26 14:23) [2]

Код покажи


 
sergnnn   (2007-09-26 14:37) [3]

Кода уйма. И вроде ничего там нет страшного.

Ещё пример, исправил очистку на

StringList.Free;
StringList := TStringList.Create;

опять ошибка.

Заменил на создание нового, без уничтожения старого

StringList := TStringList.Create;

Все ок. Вообще, из-за чего это может происходить?


 
DVM ©   (2007-09-26 14:41) [4]


> Вообще, из-за чего это может происходить?

Из-за ошибки в 17 строке. Мы долго гадать будем?
Если там кода уйма, то повыкинь лишнее или создай тестовый пример, в котором проявляется ошибка.


 
Virgo_Style ©   (2007-09-26 14:42) [5]

sergnnn   (26.09.07 14:37) [3]
StringList.Free;
StringList := TStringList.Create;

опять ошибка.


Где-то есть ссылка, которая становится битой?


 
Сергей М. ©   (2007-09-26 14:43) [6]

В программе используется передяча строк между exe и dll ?


 
sergnnn   (2007-09-26 14:45) [7]

Да, самое главное сказать пожалуй забыл этот TStringList передается в dll.
dll использует ShareMem.


 
Сергей М. ©   (2007-09-26 14:48) [8]


> dll использует ShareMem


Этот же ShareMem в такорй ситуации обязан использовать и exe.

Условие это тобой соблюдено ?


 
clickmaker ©   (2007-09-26 14:49) [9]


> dll использует ShareMem

a exe?


 
Сергей М. ©   (2007-09-26 14:51) [10]

Подозреваю к тому же, что ShareMem указан не там, где ему положено быть указанным.


 
sergnnn   (2007-09-26 14:55) [11]

Да, похоже я про ShareMem в приложении забыл. Просто было дело думал обойдусь без TStringList при передаче в dll и убрал все ссылки на ShareMem, а все стринги при передаче заменил на WideString.

А сейчас в случае с TStringList не удастся избежать использования ShareMem, ой как не хочется дополнительную библиотеку (D7)?

Можно ли использовать вместо TStringList при передаче обычный массив .. array of WideString, дабы измежать ShareMem или есть другое решение?


 
Германн ©   (2007-09-26 14:58) [12]


> или есть другое решение?
>

PChar ещё никто не отменял.


 
Сергей М. ©   (2007-09-26 15:00) [13]


> ой как не хочется дополнительную библиотеку


А как у тебя обстоят дела с использованием рантайм-пакетов при сборке exe и dll ?


> Можно ли использовать вместо TStringList при передаче обычный
> массив


Все зависит от того, что будет твориться в dll с этим переданным массивом и кто будет ответственен за уничтожение массива.


 
DVM ©   (2007-09-26 15:05) [14]


> Можно ли использовать вместо TStringList при передаче обычный
> массив

можно конечно - передавай PChar с разделителями, скажем нулевыми симоволами + длину.


 
Reindeer Moss Eater ©   (2007-09-26 15:08) [15]

передавать Text стринглиста как PChar


 
Anatoly Podgoretsky ©   (2007-09-26 15:19) [16]

Это у тебя только начало, дальше наткнешься, что в dll своя RTTI



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.041 c
2-1190363813
Flood_control
2007-09-21 12:36
2007.10.21
Edit & UpDown


2-1190788195
Alex7
2007-09-26 10:29
2007.10.21
Как обработать одно Field (DateTime) в двух Column Date и Time


2-1191129666
SveTTT
2007-09-30 09:21
2007.10.21
Курсор по SetFocus


15-1190201963
Kerk
2007-09-19 15:39
2007.10.21
Относится ко многим веткам


4-1176885230
Катеринка
2007-04-18 12:33
2007.10.21
Не работает ловушка....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский