alex000

Forum Replies Created

Viewing 20 posts - 101 through 120 (of 227 total)
  • Author
    Posts
  • in reply to: AC v7.51 – Ошибка в С++ Builder #46781
    alex000
    Participant
    'Mike-Aiki' wrote:
    Я всегда устанавливаю делфийский пакет (должны быть установлены Delphi), ставлю Delphi Compiler -> Linking -> Linker Output = “Generate all C++ Builder files (including package libs)”.

    Да, я знаю про этот способ, но разницы быть не должно – компилятор Delphi все равно один и тот-же.

    'Mike-Aiki' wrote:
    При этом всё в билдере собирается нормально, да и размер exe-шника сильно худеет. 🙄

    А вот с этого места поподробнее: сильно это – сколько? В моем случае acntBCB2006_R.lib получается весом 4.57MB.

    'Mike-Aiki' wrote:
    Кстати, в этом случае в Sconst.hpp описанной тобой строки просто нет. ^_^

    Вероятно, мы используем разные версии С++Builder – я использую BDS2006, а в Sconst.pas написано:

    Code:
    {$IFNDEF D2007}
    LONG_PTR = Longint;
    {$ENDIF}
    in reply to: Delphi XE2 + AC #46777
    alex000
    Participant

    Встроенные в Delphi скины если и повлияют на популярность AlphaControls, то очень не скоро.

    Далеко не каждая фирма согласна заплатить ~$2000 за встроенную поддержку скинов, пусть и в комплекте с 64-битным компилятором и другими плюшками – Delphi 7 все еще не плох 🙂

    in reply to: Customize Toolbar Dialog #46756
    alex000
    Participant

    Ничего страшного, я не тороплюсь, можно и подождать 🙂

    in reply to: Delphi XE2 + AC #46755
    alex000
    Participant
    'avail' wrote:

    другое дело переделать VCL проект с AC на огнемакаку, не представляется реальным.

    На данный момент, да – это довольно сложно, но в будущем должны появится конверторы VCL->FM: http://midafiremonkey.wordpress.com/

    in reply to: Ошибка при инсталяции на c++ builder #46668
    alex000
    Participant

    Я неверно задал вопрос: запустите отдельно C++Builder (а не весь RAD Studio Xe) – в Start Menu должны быть несколько ярлыков – нужен “C++Builder XE” который запускает только C++Builder и там посмотрите в Components->Install Packages… и есть ли что-то по кнопке “Components”.

    Но в любом случае непонятно, что вы делаете не так 🙁

    Попробуйте все-таки удалить компоненты полностью – включая файлы acntDelphiXE.bpl и acntBuilderXE.bpl – найдите и удалите все эти файлы.

    in reply to: Модальная форма. Что-то с ней не то #46662
    alex000
    Participant

    Рад что все разрешилось 🙂

    Только с моих исследований толку мало – только панику нагоняю 😉

    Support, так в чем же было дело? или “оно само прошло” ?

    Жаль если второе – самое ценное здесь, узнать причину проблемы, ведь это может пригодится в будущем:

    Был один случай – у клиента программа просто перестала запускаться, (скорее всего после обновления windows)

    А как раз недавно с помощью Application Verifier я нашел повреждение кучи в одной из сторонних dll, используемых программой.

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

    Возможно с тех пор я излишне опасаюсь повреждений памяти, поэтому прошу прощения если напрасно развожу здесь панику :a8:

    in reply to: Ошибка при инсталяции на c++ builder #46661
    alex000
    Participant

    Странно…

    Только что попробовал “в чистую” установить – все видно.

    Не знаю, посмотрите – в Components->Install Packages… – там видны AlphaControls ? А там же по кнопке “Components” в списке что-то есть? Вы уверены что удалили компоненты полностью (включая acntDelphiXE.bpl/acntBuilderXE.bpl)?

    in reply to: Scan line index out of range #46626
    alex000
    Participant

    В таком случае вопрос закрыт.

    Спасибо!

    alex000
    Participant

    Спасибо!

    alex000
    Participant

    Нет никаких новостей по теме? Куда делся автор темы?

    Неприятно знать, что где-то глубоко прячется повреждение памяти, пусть даже оно происходит только под Delphi седьмой версии и то не у всех.

    Хотя, может быть это и не такая страшная проблема, но хотелось бы добраться до истины 🙂

    in reply to: Ошибка при инсталяции на c++ builder #46623
    alex000
    Participant

    Чтобы компоненты были видны и в Delphi и в C++ Builder, нужно ставить только пакет для Delphi со включенной опцией Project options->Linker->Linker output->Generate all C++ Builder Files.

    Поищите внимательнее – в Delphi XE она расположена: Project options -> Delphi Compiler -> Output – C/C++ -> C/C++ Output file generation = Generate all C++Builder files (including package libs)

    in reply to: EOSError #46622
    alex000
    Participant
    alex000
    Participant
    'Michael' wrote:

    Просьба изменить у TsDateEdit режим ручного ввода значения.

    1. Когда пользователь ввел число и месяц (оставил год пустым) – то при выходе из компонента пожалуйста заполняйте текущий год.

    Пример: __.__.____ -> 01.01.____ -> (Выход) -> 01.01.2011

    Почему именно на текущий?

    А вдруг программа выписывает туристические путевки на следующий год? Или какие нибудь налоговые отчеты за прошлый?

    Кроме того, это можно сделать самостоятельно с помощью событий вроде OnAcceptDate или OnExit.

    in reply to: Конфликт AC+KMPlayer #46503
    alex000
    Participant
    'Support' wrote:

    А система какая? WinXP?

    Да, обычая XP sp3.

    KMPlayer если не ошибаюсь, у меня был версии 2.9.3.1431, если это важно.

    alex000
    Participant

    Я провел еще кое-какие исследования Project1.exe из первого сообщения и вот что нашел:

    При создании как первой так и второй формы – вызывается процедура TacMainWnd.Create (в отладчике показывалась как Project1.acSBUtils.TacStaticWnd.Create_0048C74C) которая вызывает Ac_SetWindowTheme что и приводит к повреждению памяти в модуле uxtheme.dll.

    Это безумие :36: – под отладчиком я добавил Sleep(0) перед вызовом Ac_SetWindowTheme – и нет повреждения! :a1:

    Кому посылать проклятия непонятно: альфа не виновата в повреждении памяти, тк повреждается участок который принадлежит uxtheme.dll -> виновник микрософт.

    повреждение проявляется только под Delphi 7 -> виноват Борланд.

    На сколько мне известно, во время Sleep(0) управление получают остальные процессы/потоки – видимо что-то, что должно произойти в другом потоке – успевает это сделать и повреждения не происходит. Возможно, это как-то связано с потоками, с синхронизацией.

    Так же видимо есть объяснение, почему этого не происходит под другими версиями Delphi – эта функция не вызывается вообще! Т.е. SetWindowTheme в проекте собранном под BDS2006 не вызывается ни разу.

    Если бы кто-то у кого еще повторяется данный баг выложил exe, можно было бы сравнить и выяснить в этом ли единственная причина.

    Прилагаю пропатченный Project1.exe из первого сообщения – там добавлен Sleep(0) перед вызовом Ac_SetWindowTheme, и он под отладчиком не останавливается! [attachment=5070:Project1_sleepmod.zip]

    alex000
    Participant

    И все-таки это повреждение памяти – забивка Int 3 NOP`ами не помогает.

    Между тем – проблему заметили и в английской ветке форума: http://www.alphaskins.com/forum/index.php?showtopic=6458

    Хоть у меня и нет Delphi 7 – я провел некоторые исследования.

    Во-первых – поиск по “Heap block modified after it was freed.” наводит, например сюда, где описана техника ловли таких ошибок под MSVC. Для Делфи этот способ не подходит но у FastMM есть ключ CheckHeapForCorruption который здесь может быть в тему – стоить погонять альфу с этим ключом.

    Далее – в call-stack в момент остановки есть ссылки на uxtheme.dll – что наводит на мысль что это как-то связано с темами windows.

    Просмотр в Changelog.htm от версий 7.42-7.44 показал что есть как минимум одно исправление связанное с темами – в acSBUtils.pas v7.43 добавлено в секцию uses – {$IFDEF DELPHI7UP}Themes, {$ENDIF}.

    Кстати, Changelog.htm вещь конечно классная, но так ведь можно рассекретить все исходники. Стоило ли включать лог в версию без исходников?

    Так вот, добавление Themes в секцию uses вроде бы ничего не меняет (кроме, возможно порядка выполнения initialization/finalization), но это навело на мысль сравнить Themes.pas от Delphi 7 и BDS2006.

    Там обнаружились только 2 отличия:

    Delphi 7:

    Code:
    constructor TThemeServices.Create;
    begin
    FThemesAvailable := InitThemeLibrary;
    FNewComCtrls := GetComCtlVersion >= ComCtlVersionIE6;
    UpdateThemes;
    end;

    Delphi 2006:

    Code:
    constructor TThemeServices.Create;
    const
    ComCtlVersionIE6 = $00060000;
    begin
    inherited Create;
    FThemesAvailable := InitThemeLibrary;
    FNewComCtrls := GetFileVersion(comctl32) >= ComCtlVersionIE6;
    UpdateThemes;
    end;

    Описание исправления на QC: http://qc.embarcadero.com/wc/qcmain.aspx?d=10004

    И второе:

    Delphi 7:

    Code:
    finalization
    InternalServices.Free;
    end.

    Delphi 2006:

    Code:
    finalization
    if not IsLibrary then
    InternalServices.Free;
    end.

    Что это значит на QC я не нашел, но есть объяснение на stackoverflow: http://stackoverflow.com/questions/5008903/why-does-themes-pas-leak-the-tthemeservices-singleton-when-linked-into-a-dll

    Не знаю на сколько эти отличия серьезны, он учитывая что Heap Corruption есть только под Delphi 7, эту теорию стоит проверить.

    Сорри что сообщение получилось адски длинным :ph34r:

    Если короче:

    – Стоит попробовать FastMM с ключом CheckHeapForCorruption.

    – Тем у кого проблема воспроизводится стоит попробовать добавить к проекту Themes.pas от Delphi 2006 (см. приложение) и посмотреть что получится.

    [attachment=5060:Themes.pas from Delphi2006.zip]

    in reply to: Конфликт AC+KMPlayer #46422
    alex000
    Participant

    Забавно, такой эффект действительно проявляется при включенных ExtendedBorders.

    Возможно, что KMPlayer в этом не виноват, а это глюк стандартного обработчика видео, так как если переключить его в настройках (Настройки->Конфигурация->Обработка видео->Обработчик->Обраб-к) на какой-нибудь другой (VMR9, например) то эффекта Малевича не наблюдается.

    in reply to: Локализация TsPathDialog #46328
    alex000
    Participant

    Насчет локализации – Попробуйте заменить sStrings.res на локализованный из папки ResRussiansStrings.res

    Насчет шрифта – можно скриншот?

    in reply to: Проблема с DBGridEh #46330
    alex000
    Participant
    'sylar' wrote:

    Подскажите пожалуйста, можно ли цвет выделенной записи сделать под цвет скина? Спасибо.

    Для нового вопроса – создайте новую тему.

    На Ваш вопрос – да, можно, в модуле DBGridEh есть класс TDBGridEhStyle, нужно создать наследника этого класса и переопределить в нем метод HighlightDataCellColor, в котором если включен скин и текущая строку выделена – присвоить AColor нужный цвет (например, DefaultManager.GetHighLightColor(); – цвет выделения из текущего скина).

    Далее Вам нужно воспользоваться функцией SetDBGridEhDefaultStyle(), где указать Ваш класс наследник от TDBGridEhStyle.

    По моему это все описано в хелпе к EhLib.

    alex000
    Participant
    'Cinemaizer' wrote:

    я к ней (Дельфи) и так и эдак, со словами и без слов… в том и проблема, что теперь не получается 🙂 ошибку словить в смысле.

    В этом вся суть таких ошибок повреждения памяти 🙂 Они не проявляют себя в 99% случаев.

    Call-stack тоже не поможет – скорее всего мы увидим последствия повреждения, которое может быть никак не связано с его причиной.

    Кидание SkinProvider на форму могло помочь просто потому что изменился порядок линковки модулей и повреждается какой-то другой участок памяти.

    В моем случае причиной повреждения памяти был модуль скомпилированный другой версией Delphi, но благополучно прилинкованный к проекту. Оказалось, что в разных версиях делфи слегка отличается работа со строками – в результате имеем повреждение памяти и вот такие остановки под отладчиком в совершенно разных местах и иногда неожиданные падения проги.

    Application Verifier тогда помог мне найти причину проблемы.

    Суммируя тему:

    – как минимум 3 человека заметили остановку под отладчиком при использовании AC версии 7.44 и более поздних.

    – В версии 7.41 остановка не происходит

    – Проблема наблюдается только под Delphi 7.

    – Скорее всего причина в повреждении памяти (heap corruption) – какой-то блок освобождается дважды

    Думаю, было бы неплохо чтобы кто-нибудь еще выложил .exe для изучения под AppVerifier.

    Прошу прощения что могу помочь только теоретически, к сожалению у меня нет Delphi 7 🙁

Viewing 20 posts - 101 through 120 (of 227 total)