Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi 2

Автор: RomanTim
Дата сообщения: 13.06.2006 07:49
Ramazan
greenpc
Скорее всего GetLastError это самое
Цитата:
0eedfade
и вернет
А вообще с такими невнятными ошибками обычно программа падает когда цепляется DLL-ка, которой не хватает какой-то статически используемой библиотеки или при ее загрузке происходит ошибка - библиотека грузятся сразу, а нормальная обработка исключений еще не началась.
Попробуй в отдельной задаче через LoadLibrary загружать библиотеки, используемые в той, которая падает - обычно в этом случае получается получить более осмысленное сообщение. Еще может помочь вынести тестирование на машину, где Delphi не установлена - у меня на рабочей машине тоже валился какой-то exception, а на не "загаженой" средами разработки сразу было сказано, что не хватает рантайм библиотек от VS2005
Автор: FireZone
Дата сообщения: 13.06.2006 09:30
Ramazan
Возможно, ошибка в процедуре входа в той dll, которую загружаешь по LoadLibrary.
Автор: cleg
Дата сообщения: 13.06.2006 10:48
STEEL
для организации плавающий панелей - лучше всего пользовать Toolbar2000 (http://www.jrsoftware.org/tb2k.php)

а насчет дополнения по Tab - так что тут ваще сложного? обрабатываешь для Edit/MEmo событие OnKeyPress а там if Key=#8 then ...
лучше скажи что именно надо дополнять (откуда рать слова)
Автор: reenoip
Дата сообщения: 13.06.2006 18:40
Мой вопрос, по-моему, больше к этому разделу...

Есть компонента gif (http://www.torry.net/vcl/graphics/gif/gifimage.exe). Я её благополучно установил (она реально нужна, так что сторонние компоненты можно не предлагать). В общем, теперь вот при компиляции вижу сообщение:

[Warning] GifImage.pas(12047): Symbol 'HeapAllocFlags' is specific to a platform

Мне оно не мешает, всё работает, но я хотел бы разобраться, что к чему. Корни сообщения уходят в system.pas, а в нём мне страшно пока что-либо ковырять
Будьте добры, объясните смысл ворнинга (насколько я понял, речь о выделении памяти, если не ошибаюсь), возможные причины его появления, и, если можно, методы устранения.

Спасибо.
Автор: FireZone
Дата сообщения: 13.06.2006 19:39
reenoip
При чем тут system.pas? Ясно же написано, что у тя в модуле GifImage.pas объявлено нечто по имени HeapAllocFlags. И там наверняка стоит приписка platform, чтобы компилер соответствующим образом ругался. Скорее всего, это переменная типа DWORD, которая используется при вызове функции HeapAlloc из виндового апи. И ругань эта означает, что под другой осью использование этой переменной может быть лишено смысла.
Автор: Ramazan
Дата сообщения: 13.06.2006 20:37
greenpc
RomanTim
FireZone
Проблема разрешилась. Как выяснилось, в процессе написания вызывающей DLL в нее "вкрались" () девэкспрессовские компоненты, которые также присутствовали в вызываемой DLL. Естественно, что в список run-time пакетов ничего добавлено не было. Действительно, возникала неявная ошибка при инициализации DevExpress. Добавление пакета cxGridVCLD7 спасло проект и меня, а то крыша уже реально ехала .

Итак, обобщая: при возникновении невнятных ошибок в динамической загрузке DLL в первую очередь стоит поиграть со списком run-time packages.

Всем спасибо!
Автор: RomanTim
Дата сообщения: 13.06.2006 22:04
reenoip

Цитата:
[Warning] GifImage.pas(12047): Symbol 'HeapAllocFlags' is specific to a platform

В модуде GifImage.pas объявлена переменная
HeapAllocFlags: Word platform = 2; { Heap allocation flags, gmem_Moveable }
"platform" говорит о том, что использование этой переменной (функции, модуля и т.д.) может работать не на всех платформах, так что обращать внимание на это предупреждение нужно только если пишешь что-то кроссплатформенное. Если же нет, то можешь просто выключить предупреждения Platform Symbol и Platform Unit в настройках проекта
Автор: reenoip
Дата сообщения: 13.06.2006 23:50
FireZone
RomanTim
Спасибо за инфу, я не знал об этом.
Автор: Vol_2005
Дата сообщения: 14.06.2006 06:54
Каким образом инсталировать создаваемый компонент в BDS2006?
В Delphi 7 достаточно создать скелет компонента New Component
и инсталировать его указав имя закладки. Причем,
если закладки с таким именем не существует, она будет создана.
В BDS2006 так не получается.
Где можно почитать об этом на великом и могучем?
Автор: RomanTim
Дата сообщения: 14.06.2006 09:22
Vol_2005
Создать для него пакет или добавить в стандартный dclusr
Автор: vshersh
Дата сообщения: 15.06.2006 15:32
Hi all!
Кто какие компоненты использует для отображения всплывающих окошек типа как в QIP?
Автор: PowerChute
Дата сообщения: 16.06.2006 04:46
vshersh
MSNPopUp - using MSN-style popup windows in your Delphi programs
Copyright (C) 2001-2003 JWB Software
Автор: 0315
Дата сообщения: 16.06.2006 06:18
???
В общем есть Edit, в нём написан путь к сохраняемым файлам, нужно реализовать возможность изменения этого пути.
Как в Delphi вызвать диалог выбора каталога (не файла) как в установщиках.
Есть также проблемка, если вводить путь вручную то он не сохраняет файлы в несуществующий каталог, есть у кого алгоритм, который проверял бы существует ли указанный путь, а если не существует, то создавал бы недостающие каталоги.
Автор: RomanTim
Дата сообщения: 16.06.2006 07:17
0315
Выбор папки - функция SelectDirectory (их 2 перегруженых, одна показывает делфийский диалог, вторая - виндовый)
Проверка на наличие папки - DirectoryExists
Создание папки - ForceDirectories
Автор: fixer84
Дата сообщения: 16.06.2006 07:26
vshersh
В бергах также есть возможность создавать красивые всплывающие окошки.
Автор: EVD
Дата сообщения: 16.06.2006 07:31
0315

Цитата:
Как в Delphi вызвать диалог выбора каталога (не файла) как в установщиках.


Либо через WinApi (функция SHBrowseForFolder), либе используя какие-нибудь библиотеки, например TJvBrowseForFolderDialog из JEDI.


Цитата:
есть у кого алгоритм, который проверял бы существует ли указанный путь, а если не существует, то создавал бы недостающие каталоги


В Delphi есть функция ForceDirectories
Автор: vshersh
Дата сообщения: 16.06.2006 09:22
PowerChute
fixer84
Спасибо!
Мсновский я уже юзал, берги щас гляну...
Чем понравился мсновский - тем что весь компонент в одном файле - очень удобно добавлять в проект...
Слышал, что еще в SUIPAck тоже что-то подобное есть - кто-нибудь пользовал?

Автор: reenoip
Дата сообщения: 16.06.2006 15:28
vshersh, есть ещё в TMS (алертвиндоу).
Автор: vshersh
Дата сообщения: 16.06.2006 15:34
reenoip
Кстати да - по моему dcreader к обменнику его использует, или я ошибаюсь?
Автор: reenoip
Дата сообщения: 16.06.2006 20:13
vshersh, если честно - я без понятия. Просто эту программу не использую
Надо, кстати, попробывать её.

Насчёт той компоненты, что использует QIP - я слышал, что она стоит в пределах $300. По-моему, такая цена - это бред. Я пытался реализовать такое же и у себя, долго искал, но, в конце концов, отказался и от а-ля MSN, и от алертвиндоу. В процессе поиска как-то остыл к таким окошкам окончательно )))
Автор: russko
Дата сообщения: 17.06.2006 08:35
Sabbath_Black

Цитата:
Господа, прошу у Вас помощи. Дело в том что я вообще не знаю Delphi. Только пытаюсь хотябы чуть-чуть разобраться. Мои познания пока сводятся к созданию формы и добавлению на неё всяких компанентов. Так вот вопрос:
Мне нужно как-то привязать обычную кнопку на форме к сторонней эксешки из коренной папки будующей программы. Как это сделать, какой код для кнопки прописать?
Извените если что не так написал, просто инфра эта мне очень нужна, а куда обратится не знаю. Заранее благодарен...

Для этого используется функция ShellExecute(...). В Делфи хелп по ней вполне достаточен. Главное не забыть подключить в списке модулей (раздел uses) - ShellApi
Автор: Betorgon
Дата сообщения: 17.06.2006 20:00
А как можно сделать так, чтобы можено было создавать Tab'ы с одинаковыми объектами на них (конкретно что-бы можно было создавать Tab'ы с RichEdit'ами)
Автор: RomanTim
Дата сообщения: 18.06.2006 14:19
Betorgon
Что значит создавать?
В дизайнтайме - PageControl и создавай на нем сколько нужно табовс чем угодно на них.
В рантайме в нужном событии формы
Код:
ts := TTabSheet.Create(Self);
ts.PageControl := PageControl1;
re := TRichEdit.Create(Self);
re.Parent := ts;
...
Автор: ShIvADeSt
Дата сообщения: 19.06.2006 00:55
Betorgon
Или создать фрейм с нужными контролами, а потом просто в рантайме создавать шиты, и на них уже грузить фрейм.
Автор: vshersh
Дата сообщения: 19.06.2006 09:34
reenoip
Посмотрел разные - и тоже остановил свой выбор на мсн
По ходу, самый простой и в то же время самый навороченный вариант
Автор: RostY
Дата сообщения: 19.06.2006 14:23
Можно ли при использовании TQuery и BDE избавиться от появления всяких нехороших файлов: _qsql*.db ?
Автор: reenoip
Дата сообщения: 19.06.2006 19:07
Как в Memo можно узнать количество оставшихся символов для ввода (выставил ограничение на 999)?
Автор: RomanTim
Дата сообщения: 19.06.2006 19:37
reenoip
Код: Label1.Caption := IntToStr(Memo1.MaxLength - Length(Memo1.Lines.Text));
Автор: Ramazan
Дата сообщения: 19.06.2006 21:21
RostY
Насколько я знаю - нет
Автор: EZH
Дата сообщения: 19.06.2006 21:39

Цитата:
Можно ли при использовании TQuery и BDE избавиться от появления всяких нехороших файлов: _qsql*.db ?

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

Добавлено:
В принципе, помница, их можно назначить создаваться в определенном каталоге...

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Событие STFilter(DBGridEh) ???


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.