Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2017, 15:20   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию код выполняется, но приводит к ошибке в другом месте

Здравствуйте.
Несколько дней дебажил проект плеера. Не мог найти, из-за чего он крашится.
Сегодня, наконец-то , докопался до этого:
Код:

function GetWindowText(w:hwnd):string;
var
  p : pchar;
  n : integer;
begin
  if w>0 then
  begin
    n := GetWindowTextLength(w)+1;
    getmem(p,n);
    if Winapi.Windows.GetWindowText(w,p,n)>0 then
    setstring(result,p,n-1) else
    result := '';
    freemem(p,n);
  end else
  result := '';
end;
Сам код нормально срабатывает, но если далее попытаться прочитать XML (TXMLDocument), то возникает ошибка:


Если не читать XML, то где-то в другом месте программы возникнет другая ошибка. Если закомментировать код, приводящий ко второй ошибке, то еще другая ошибка возникнет еще где-нибудь и т.д. Иногда вообще показывает на TInterfaceList, хотя в моём коде я этот класс нигде не использую.
Если не вызывать GetWindowText(), то никаких ошибок нет.
Delphi XE10 Seattle.

Последний раз редактировалось BLACK_RAIN; 03.05.2017 в 15:26.
BLACK_RAIN вне форума Ответить с цитированием
Старый 03.05.2017, 16:13   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

GetMem выделяет в БАЙТАХ, n у вас в СИМВОЛАХ... А вообще так и бывает, если с памятью неаккуратно.
p51x вне форума Ответить с цитированием
Старый 03.05.2017, 16:26   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
GetMem выделяет в БАЙТАХ, n у вас в СИМВОЛАХ
то есть, на 2 умножить?
BLACK_RAIN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код выполняется не по порядку Серёга Русич Общие вопросы Delphi 3 12.02.2017 20:29
Present у LPDIRECT3DSWAPCHAIN9 приводит к ошибке Kukurudza Visual C++ 1 20.05.2013 13:14
Баг стандартного ввода? Или как мой бесстыжий код приводит к синему экрану смерти _Bers Общие вопросы C/C++ 11 02.01.2012 16:34
новое окно Эксель в другом месте ShamanK Microsoft Office Excel 6 02.12.2009 15:16
как в другом месте программы вызвать case 0? student_) Общие вопросы по Java, Java SE, Kotlin 9 11.10.2008 13:55