Найдено результатов: 22

Может ли Windows dll получить свое собственное имя файла?

Файл Windows exe имеет доступ к командной строке, которая его вызвала, включая путь и имя файла. напр.. C:\MyApp\MyApp.exe --help .

Но это не так для dll, вызванного через LoadLibrary . Кто-нибудь знает способ для dll узнать, каков его путь и имя файла?

В частности, меня интересует решение Delphi, но я подозреваю, что ответ будет практически одинаковым для любого языка.

windows   delphi   winapi   dll    

452   1   16:03, 1st July, 2020


Delphi ресурсы для существующих .NET разработчик

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

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

Книги, веб-сайты и т.д. все оценили.

Спасибо.

delphi    

388   5   15:41, 19th August, 2020


Delphi ресурсы для существующих .NET разработчик

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

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

Книги, веб-сайты и т.д. все оценили.

Спасибо.

delphi    

421   5   10:26, 17th August, 2020


Существуют ли какие-либо компоненты "mind mapping" для Delphi? (родной VCL предпочтительно)

Я ищу предварительно написанный компонент (w/source) для проекта Delphi, над которым я работаю, чтобы создать ментальные карты / концептуальные карты, подобные этим:

http://en.wikipedia.org/wiki/Image:MindMeister_screenshot_OS_X.jpg http://en.wikipedia.org/wiki/Image:XMIND_2008_in_Windows_Vista.png

Есть какие-нибудь идеи?

delphi   components   vcl   mindmapping    

545   9   06:55, 7th August, 2020


Что является лучшим способом, чтобы сделать приложение Delphi полностью весь экран?

Как лучше всего сделать приложение delphi (delphi 2007 для win32 здесь) полностью полноэкранным, удалив границу приложения и закрыв панель задач windows ?

Я ищу что-то похожее на то, что делает IE, когда вы нажимаете F11.

Я хочу, чтобы это был вариант времени выполнения для пользователя, а не решение о времени разработки моим хорошим Я.

Как уже говорилось в принятом ответе

BorderStyle := bsNone; 

это было частью способа сделать это. Странно, но я продолжал получать ошибку E2010 Incompatible types: 'TFormBorderStyle' and 'TBackGroundSymbol' при использовании этой строки (другой тип был определен bsNone ).

Чтобы преодолеть это я должен был использовать :

BorderStyle := Forms.bsNone;

delphi   delphi-2007    

550   9   22:08, 5th August, 2020


Изменение каталога CURRENT save/default в Delphi 2007 без использования функции Save-As

У меня есть проектная группа, которая содержит проект, над которым я работаю, а также некоторые связанные компоненты и пакеты. Я предпочитаю сохранять ссылки на базы данных активными во время разработки.

Я знаю, как написать код, который изменил бы расположение файла базы данных, но в этом случае я просто использую ".\data" вместо этого по различным причинам времени разработки. К сожалению, использование относительной папки означает, что Delphi должен быть "pointing" в той же папке, в которой находится проект.

Я хотел бы иметь возможность принудительно перенести расположение папки в другой корень, не используя функцию "Save As". Кто-нибудь случайно не знает, где Delphi IDE получает эту информацию?

delphi   ide    

474   7   20:59, 26th August, 2020


Delphi и COM: TLB и вопросы технического обслуживания

В компании, где я работаю, мы разрабатываем все GUI в C#,, но приложение kernel в основном разработано в Delphi 5 (по историческим причинам), с большим количеством компонентов, сделанных в COM+. В связи с этим очень специфическим видом применения a I два вопроса:

  • Опытные ребята в Delphi и / или COM, есть ли у вас какие-либо обходные пути для работы с багги TLB интерфейсом ? Некоторые из ошибок: IDE сбой во время выпуска большого TLB, потеря методов IDs, TLB повреждение и т.д. Здесь мы не нашли никакого хорошего решения. На самом деле мы пытались сделать обновление до новой версии 2007 года. Но новый интерфейс IDE TLB имеет те же ошибки, которые мы нашли раньше.

  • Как вы управляете версиями TLBs ? Файл TLB находится в двоичном формате, и разрешение конфликтов очень трудно сделать. Мы попытались сделать это, экспортируя описания интерфейсов в IDL и фиксируя в CVS, но мы не нашли никакого хорошего способа генерировать TLBs из IDL, используя Delphi. Кроме того, инструмент MIDL, предоставленный Microsoft, неправильно проанализировал файлы IDL, которые мы экспортировали из delphi.

delphi   com   typelib   com-hell    

525   5   02:45, 8th August, 2020


Как отслеживать ссылки на объект?

В мире, где ручное распределение памяти и указатели все еще правят (Borland Delphi), мне нужно общее решение для того, что я думаю, является общей проблемой:

В данный момент на объект можно ссылаться из нескольких мест (списки, другие объекты, ...). Есть ли хороший способ отслеживать все эти ссылки, чтобы я мог обновить их, когда объект будет уничтожен?

oop   delphi    

407   4   17:45, 9th August, 2020


Модульное тестирование в Delphi - как вы это делаете?

Мне интересно, как несколько пользователей Delphi здесь делают модульное тестирование, если таковые имеются? Есть ли что-нибудь, что интегрируется с IDE, что вы нашли хорошо работает? Если нет, то какие инструменты вы используете и есть ли у вас или знаете примеры мини-проектов, которые демонстрируют, как все это работает?

Обновление:

Я забыл упомянуть, что использую BDS 2006 Pro, хотя иногда я заглядываю в Delphi 7, и, конечно, другие могут использовать другие версии.

delphi   unit-testing   delphi-7   delphi-2006    

700   9   01:52, 11th August, 2020


Как отслеживать ссылки на объект?

В мире, где ручное распределение памяти и указатели все еще правят (Borland Delphi), мне нужно общее решение для того, что я думаю, является общей проблемой:

В данный момент на объект можно ссылаться из нескольких мест (списки, другие объекты, ...). Есть ли хороший способ отслеживать все эти ссылки, чтобы я мог обновить их, когда объект будет уничтожен?

oop   delphi    

482   4   11:47, 13th August, 2020


Несколько форм Delphi приложений и диалоговых окон

У меня есть приложение Delphi 7, которое имеет два вида документа (например, редактирование WYSIWYG HTML может иметь вид WYSIWYG и исходный вид-не мое реальное приложение). Они могут быть открыты в отдельном windows или закреплены на вкладках в главном окне.

Если я открываю модальный диалог из одной из отдельных форм, основная форма выводится на передний план и отображается как выбранное окно на панели задач windows. Предположим, что основная форма-это представление WYSIWYG,а исходное представление выводится наружу. Вы переходите к определенной точке в исходном виде и вставляете тег изображения. Появится диалоговое окно, позволяющее выбрать и ввести нужные свойства изображения. Если вид WYSIWYG и исходный вид перекрываются, то вид WYSIWYG будет выведен на передний план, а исходный вид будет скрыт. Как только диалоговое окно будет закрыто, исходный вид снова появится в поле зрения.

Я попытался установить владельца и свойства ParentWindow в форму, с которой он связан:

dialog := TDialogForm.Create( parentForm );
dialog.ParentWindow := parentForm.Handle;

Как я могу исправить эту проблему? А что еще я должен попробовать?

Учитывая, что люди, похоже, спотыкаются на моем примере, возможно, я могу попробовать с лучшим примером: текстовый редактор, который позволяет вам иметь несколько открытых файлов одновременно. Файлы, которые вы открыли, находятся либо во вкладках (например, в Delphi IDE), либо в собственном окне. Предположим, что пользователь открывает диалоговое окно проверки орфографии или диалог поиска. Что происходит, так это то, что если файл редактируется в своем собственном окне, то это окно отправляется ниже основной формы в z-порядке при отображении модального диалога; как только диалоговое окно закрывается, оно возвращается к своему исходному z-порядку.

Примечание: Если вы используете Delphi 7 и ищете решение этой проблемы, смотрите мой ответ ниже на странице, чтобы увидеть, что я в итоге сделал.

delphi   delphi-7    

439   5   01:13, 14th August, 2020


Спецификация агрегатов TClientDataSet не добавляется автоматически при создании поля агрегата

Мне нужно создать агрегатное поле в TClientDataSet, но, как сказано в документах:

Выберите OK. Вновь определенный агрегат поле автоматически добавляется в поле клиентский набор данных и его агрегаты свойство автоматически обновляется до включите соответствующий агрегат спецификация.

Когда я добавляю новое поле aggregate, спецификация aggregate не добавляется к агрегатам TClientDataSet, поэтому я не могу использовать его OnUpdateMethod.

Я также попытался обработать событие OnChange моего нового агрегатного поля, но оно вообще не запускается.

Я делаю что-то не так? Я просто хочу иметь агрегированное поле и запускать событие, все это изменение значения.

Это сломано на delphi? Потому что то, что есть в документации, не отражает фактического поведения.

правка: @Michal Sznajder Я использую Delphi 2007

delphi    

433   2   15:40, 7th August, 2020


Как программно нажать checkbox внутри SysListView32 в чужом приложении?

Есть чужое приложение, одно из окон которого выглядит так:

ad909a6b2fa411c46ac7e4c77d092841.png


Мне нужно программно снять галочку с checkbox'ов внутри этого списка.

Handle окна и handle списка уже получил, а что делать дальше? Как добраться до этих checkbox'ов?


Программа пишется на Delphi.

// ищем окно с заголовком &quot;Select Tools&quot;<br/>
SelectToolsHandle:=GetWindowHandle('Select Tools');<br/>
if (SelectToolsHandle &lt;&gt; 0) then begin<br/>
 // ищем список<br/>
 SysListHandle:=FindWindowEx(SelectToolsHandle, 0, 'SysListView32', nil);<br/>
 if (SysListHandle &lt;&gt; 0) then begin<br/>
 showmessage(IntToStr(SysListHandle)); // handle списка получен<br/>
 // Что же дальше делать?(<br/>
 end;<br/>
end;<br/>

Delphi    

414   3   19:39, 15th August, 2020


ООП Delphi 7

Может вопрос будет и тупой и у многих возникнет желание понизить мне карму и рейтинг, но тем не менее я его задам. Нужна литература, где кратко и в тоже время ПОНЯТНЫМ языком описано объекто-ориентированное программирование в Delphi. Можно даже на английском языке, лишь бы было понятно. Спасибо за понимание

Delphi   ООП    

294   5   23:47, 26th August, 2020


Delphi (Lazarus) — динамические объекты, и их события?

Доброго время суток, гуру Delphi и не только. Случай вот такой:

Описана процедура
procedure tform1.onbclick(Sender: TObject);

Создаю в процессе выполнения программы кучку Button'ов в массив, и назначаю им эту процедуру как событие OnClick
ArBut[i].OnClick=@onbclick;

Все работает, кроме параметра Sender. Как нужно его правильно указывать при таком случае? Или как можно это обойти?


upd:

Все работает. Перепутал в procedure onbclick параметры name и caption. а ведь именно name при динамическом создании я не указывал, поэтому его запрос был пустой и я думал что ничего не работает.

Delphi   Lazarus    

415   1   13:20, 20th August, 2020


Не могу вернуть строку из COM (Delphi)?

Есть задание написать COM сервер, на выходе у него должна быть строка.


Вот так выглядит интерфейс в _TLB.pas файле
// *********************************************************************//<br/>
// Interface: ITMyCOM<br/>
// Flags: (256) OleAutomation<br/>
// GUID: {D94769D0-F4AF-41E9-9111-4D8BC2F42D69}<br/>
// *********************************************************************//<br/>
 ITMyCOM = interface(IUnknown)<br/>
 ['{D94769D0-F4AF-41E9-9111-4D8BC2F42D69}']<br/>
 function MyDrawWS(a: Integer; b: Integer): WideString; stdcall;<br/>
 end;<br/>



Вот так вот он выглядит в ОСи Windows
[<br/>
 odl,<br/>
 uuid(D94769D0-F4AF-41E9-9111-4D8BC2F42D69),<br/>
 version(1.0),<br/>
 helpstring(&quot;Interface for TMyCOM Object&quot;),<br/>
 oleautomation<br/>
]<br/>
interface ITMyCOM : IUnknown {<br/>
 BSTR _stdcall MyDrawWS(<br/>
 [in] long a, <br/>
 [in] long b);<br/>
};<br/>


т.е. WideString и есть BSTR, как по идее и должно быть.


Сама функция в COM сервере имеют следующий вид
function TTMyCOM.MyDrawWS(a, b: Integer): WideString;<br/>
begin<br/>
 Result := WideString(IntToStr(a+b));<br/>
end;<br/>



Вызываю её следующим образом
Edit1.Text := String(MyCOM.MyDrawWS(1,1));<br/>


и получаю ошибку вида First chance exception at $75A9FBAE. Exception class EAccessViolation with message 'Access violation at address 75A409A4 in module 'RPCRT4.dll'. Read of address FFFFFFF8'. Process Project1.exe (2296)


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

Delphi    

366   3   07:24, 17th August, 2020


Чистка Delphi-кода?

Есть большой (несколько сот тысяч строк) проект на Delphi, который разрабатывается около 10 лет.

Полагаю, работал над ним не один десяток разработчиков. Следовательно, там можно увидеть всевозможные проявления человеческой глупости, халатности, криворукости и прочих неприятных вещей.

Хотелось бы немножко этот проект причесать, и максимально этот процесс автоматизировать (потому как вручную это может занять не одну неделю). А именно:

— удалить закомментированные блоки кода

— удалить код, который не линкуется в исполняемый файл

— удалить неиспользуемые uses

— удалить pas/dfm файлы, которые не относятся к проекту

— чтобы все предыдущие действия были полностью контролируемые


Ну, желательны еще разные плюшки, типа форматирования кода по шаблону, выявления потенциально опасных или просто подозрительных мест, и т.д. Но чистка кода (вышеназванные пункты) является приоритетной.

Delphi   Автоматизация    

434   7   05:58, 23rd August, 2020


С# — Delphi — Управление громкостью в Windows

Потребовалось из под приложения управлять общим уровнем громкости системы. Основным языком использую Delphi, полез гуглить. В итоге какой то пример найден был, но корректно работает лишь под Win XP и ниже. Дело в том что начиная с Vista каждое приложение имеет свой личный уровень громкости, а потому найденный пример позволяет управлять лишь своей громкостью, когда мне нужен общий уровень.

Сейчас изучаю по немногу С#, да и под .NET как мне кажется с этим должно быть проще. Ну и собственно вопрос — может ли кто предоставить рабочий пример либо на C#, либо на Delphi?

Delphi   C    

337   4   07:39, 13th August, 2020


Учебник по delphi

Посоветуйте хороший учебник по Delphi (другой язык не предлагать), по которому можно в достаточно короткие сроки научиться писать грамотный код, такой, чтобы потом не было стыдно :)

Если знаете какой-нибудь хороший учебник, расскажите. Интересует собственно все: особенности языка, как вообще правильно писать какой-либо большой проект, формы, отладка, Unit-тестирование.

Delphi   Книги    

360   4   12:35, 1st August, 2020


IBDataSet Sorting by CalcFields?

Привет!


Ой… народ бяда у меня!!!


Дано:

1. IBDataSet. Со всеми настроенными запросами, и очень важным запросом RefreshSLQ

2. У датасета есть вычисляемое поле SUMM, вычисляется хитро средствами SQL не решить.

3. cxGridDBTableView в режиме GridMode(То есть отображает сортировку так как она есть в DataSet, и отображает только небольшое количество записей остальные докачивает по необходимости). В другой режим переводить нельзя, так как большой объем данных.


Задача:

Отсортировать данные по полю SUMM.


Как это сделать?

Delphi    

364   1   16:40, 1st October, 2020


Индексирование, как правильно реализовать в Firebird delphi?

Привет!


Дано:

1. БД firebird, с двумя таблицами:

— table1 (ID, NAME, IDCOUNT)

— table2 (ID, HASHCOUNT) hashcount — строка, зашифрованное число.

2. программа на delphi, которая умеет загружать эти данные и отображать расшифровывая.


Задача:
При выводе в таблицу нужно отсортировать данные по значению колва, то есть по числу.


Пришел к выводу что нужно сделать индексирование данных и хранить индексы.

Но создание индексов очень накладным получилось. Может у кого есть идеи по этому поводу.

Индексы создаю вот так:

1. Получаю все значения из table2

2. Дешифрую и помещаю в массив, при этом создается и массив индексов.

3. Сортирую индексы по методу сортировки Хоара.

4. Выгружаю получившиеся индексы в бд.


При выборке данных из бд выбираю и индексы и сортирую по ним.

Вроде как все надо. но создание индексов очень медленное получилось.

Данные обновляются часто и по этому часто надо индексировать это очень замедляет работу.


Если есть у кого-то мысли по другому варианту решения то буду очень благодарен.

Delphi   Firebird    

325   2   21:06, 1st October, 2020


Экспорт XLS в Delphi + Массив Variant

Уважаемые Delphi специалисты (Использую Delphi 7)

Вот такая вот задача, при экспорте XLS файла в stringgrid средствами COM.

Начало и заголовки стандартные, интереса не представляют.

Но, есть тип RangeMatrix: Variant, в который помещаются данные при вызове
RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;

Затем данные из RangeMatrix по циклу помещаются в StringGrid.Cell[ROW,COL]

Вот так:
StringGrid.Cells[ROW, COL] := RangeMatrix [ROW,COL];
Этот код работает.

Все данные помещаются нормально, за исключением DateTime, которое помещается в виде Double, т.е. время в ячейке вместо 16:30 выглядит как 0.ХХХХХХХХ, т.е. 0.324234234

Вопрос: Как сделать распознать тип текущих данных в RangeMatrix [ROW,COL]; дабы совершить над ними какие либо действия в процессе обработки?

В отличие от кода выше, код ниже, когда значение RangeMatrix [ROW,COL] присвавается переменной, не работает
MyTest := RangeMatrix[ROW,COL];

Этот код выдает ошибку: Variant or safe array index out of bounds

Голова сломалась совсем. Прошу совета, почему переменной MyTest нельзя присвоить RangeMatrix[ROW,COL]?

Delphi   Pascal    

337   4   05:41, 2nd October, 2020