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

» Вопросы по Delphi (до версии 2009) - часть 5

Автор: andrewtishkin
Дата сообщения: 29.09.2009 00:45

Цитата:
а можно поинтересоваться предпочтением indy ? (там ведь вроде полегче )

Плюсы
1) Полегче
2) Есть документация
3) Встроено в Delphi
На этом плюсы заканчиваются

Минусы
1) ГЛЮКИ (дофига, время от времени всплывают новые; часто им посвящаются целые дискуссии на форумах)
2) ЮНИКОДНЫЕ глюки. Это вообще тихий ужас... Indy под D2009 вообще не заточили
3) Довольно-таки тормознутые компоненты... ICS, например, пошустрее будет, и не подвешивает программу во время выполнения запросов (то есть можно обойтись без создания отдельных потоков)
4) На Indy похоже вообще "забили", всё туманно, особенно если зайти на оф. сайт
Ну и ещё вот тут недавно обсуждение видел на DelphiMaster.ru про ICS

Ну так что... Никто с ICS не работает, POST-запросы не отсылает, помочь не может
Автор: skYmarine
Дата сообщения: 29.09.2009 10:29
Здравствуйте, появился вопрос по quickreport (если не в той ветке пишу - прошу указать нужную).
Есть набор данных cust , sql которого select cust_id from customers.
Как средствами quickreport вывести результат в строку через запятую, т.е. вместо таблицы
1
2
3
4
---
я хочу иметь 1, 2, 3, 4.

Акцент - именно средствами quickreport, средстави аггрегатных функций базы данных решение не пойдет.

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

заранее спасибо.
Автор: volser
Дата сообщения: 29.09.2009 10:40
Smokeer

Цитата:
меня интересует есть ли варианты когда сохранить обработчик невозможно - он переопределен в диспетчере объектов

Почему невозможно?

Например так,

AFormCloseQueryOld: TCloseQueryEvent; -- переменная

AFormCloseQueryOld := Form1.OnCloseQuery; -- сохранить старый обработчик

Form1.OnCloseQuery := FormCloseQueryNew; -- новый

А дальше вызов

procedure TForm1.FormCloseQueryNew(Sender: TObject; var CanClose: Boolean);
begin
if Assigned(AFormCloseQueryOld) then
AFormCloseQueryOld(Sender, CanClose);

--
end;
Автор: Smokeer
Дата сообщения: 29.09.2009 13:33

Цитата:
Почему невозможно?

Потому-что он на момент выполнения моего кода УЖЕ ЗАМЕНЕН внешней процедурой.
То есть в вашем конкретном примере вы сохраняете не внутренний обработчик, а УЖЕ ВНЕШНИЙ.
Автор: volser
Дата сообщения: 29.09.2009 14:03
Smokeer
В таком случае переделайте логику работы программы. Добавьте свои события которые вызывайте во внешней процедуре.

Приведите конкретный пример проблемы что бы не гадать на кофейной гуще.
Автор: ShIvADeSt
Дата сообщения: 29.09.2009 14:08
Smokeer

Цитата:
А как делать если на момент выполнения моих команд уже установлена внешняя процедура и нужно переключить на внутреннюю?

Ты можешь сам переопределить оконную процедуру и просто не передавать управление раннему перехватчику. Придерживайся мнения - что если программа после твоих действий должна что то делать, то передавай управление дальше, иначе просто гаси его.

Хотя проще это можно сделать в OnCreate событии. Там переопределяешь оконку, а переопределение через диспетчер объектов будет всяко позже.
Автор: Denion
Дата сообщения: 29.09.2009 21:42
V1s1ter
А средствами Delphi можно это сделать?
Автор: Frodo_Torbins
Дата сообщения: 29.09.2009 22:35
Denion
В D2009+ есть простенький редактор ресурсов встроенный прямо в среду. Или вам в рантайме надо ресурсы править?
Автор: V1s1ter
Дата сообщения: 29.09.2009 22:58
Denion
Если речь только о строковых ресурсах то сработает такая конструкция

Код:
resourcestring
CreateError = 'Cannot create file %s';
OpenError = 'Cannot open file %s';
LineTooLong = 'Line too long';
ProductName = 'CodeGear Rocks';
Автор: diodio
Дата сообщения: 30.09.2009 09:10
Добрый день!
Подскажите, пожалуйста.
Использую FileCopy и FileDelete из Jedi. Т.е. файл копируется, и если существует по пути копирования, то удаляется. Иногда по каким-либо причинам файл не удаляется, после этого программа уходит в бесконечный цикл по копированию этого файла.
Как от этого можно избавиться?
Или подскажите, как удалить файл не взирая на то, что он занят другим приложением, либо дождаться, пока файл не "освободится".
Спасибо.
Автор: Frodo_Torbins
Дата сообщения: 30.09.2009 09:34
diodio
FileDelete ведь возвращает результат выполнения. Каков он в вашем случае?
Автор: diodio
Дата сообщения: 30.09.2009 10:40
false. Но что это меняет?
Автор: V1s1ter
Дата сообщения: 30.09.2009 11:11
diodio
Я тоже сталкивался с таким моментом, но в моем случае нельзя было удалять файлы принудительно. Я посмотрел как подобную проблему решали другие и увидел следующее:
0) Счетчик := 0
1) пытаемся чего-то сотворить с файлом
2) если ладушки - на выход
3) ждем 1 сек
4) обрабатываем очередь сообщений виндовс
5) Счетчик := Счетчик+1
6) если Счетчик < 5 идем на шаг 1
7) спрашиваем у пользователя "пытытся еще?" если ответ да на шаг 0
8) выход




Автор: diodio
Дата сообщения: 30.09.2009 11:13
Спасибо, попробую
Автор: SReg84
Дата сообщения: 30.09.2009 12:54
Привет, ребята! Необходима Ваша помощь
Значит, имеется некий драйвер, к примеру dev.sys, к нему "в комплекте" идёт файл с необходимыми параметрами установки dev_install.inf
Так вот трабла в чем... Как его установить в систему программно,"по-тихому", а не с помощью Мустера_Установки_Нового_Оборудования? Так, чтобе после ребута, его возможно было бы увидеть в списке "Системные устройства" в Диспетчере устройств. Пробывал просто скопировать эти два файла в %SystemDir%\drivers\ то система при загрузке его "не подхватывает"
Если можно, то конечно желательно бы кусочек кода (или ссылку на крайняк), я новичек в программировании...
Заранее Огромное спасибо!
Автор: volser
Дата сообщения: 30.09.2009 13:06
SReg84
Ну и при чем тут Delphi?
Автор: SReg84
Дата сообщения: 30.09.2009 13:37

Цитата:
Ну и при чем тут Delphi?

Как причем?
Мне необходимо реализовать вышеописаную процедуру, именно на дельфи
Автор: ShIvADeSt
Дата сообщения: 01.10.2009 01:19
SReg84
По тихому вряд ли получится - если у драйвера нет цифровой подписи, то винда ругнется. Второе - подобное поведение свойственно руткитам и прочим вредным вещам, поэтому объясни для чего тебе это надо, в противном случае в андеграунд иди.
Ну и третье - либо я ламер в Дельфи, либо это далеко не типовой вопрос. Так как когда я начинал изучать Дельфи то вопрос, как установить драйвер устройства меня занимал в последнюю очередь.
И в четвертых, тебе повезло вот код

Код:
    

uses
ShellAPI;

function InstallINF(const PathName: string; hParent: HWND) : boolean;
var
instance: HINST;
begin { InstallINF }
instance := ShellExecute(
hParent,
PChar('open'),
PChar('rundll32.exe'),
PChar('setupapi,InstallHinfSection DefaultInstall 132 ' + PathName),
nil,
SW_HIDE);

Result := instance>32
end; { InstallINF }
Автор: SReg84
Дата сообщения: 02.10.2009 18:03
ShIvADeSt

Цитата:
если у драйвера нет цифровой подписи

да, дрова не подписаны мелкосфтом.

Цитата:
Второе - подобное поведение свойственно руткитам и прочим вредным вещам, поэтому объясни для чего тебе это надо, в противном случае в андеграунд иди.

ну почему сразу "вредным"? кстати, дрова общедоступны, вот гуглевская ссылка. Для чего? просто решил наваять ГУИ для разных версий...
А насчет кода... так это видел... так что мне не очень то и повезло,т.к я гуглил пару часов перез тем, как задать вопрос. Он просто дублирует П.К.М. на *.inf -> "Install", но в реестре, к примеру я не нахожу тех ключей, которые прописаны в нём(.inf). через tRegistry прописать геморно как то, тк. ключей разных видов туева хуча... Вот я и подумал, может кто то сталкивался с подобной проблемой?

volser

Цитата:
Ну и при чем тут Delphi?

А по-твоему, дельфи только для того, чтоб Хелло Ворлд выводить на экран?



Автор: Smokeer
Дата сообщения: 02.10.2009 20:53
SReg84
А вы сравните реестр до установки драйвера и после, заодно и файлы (Вообще для подобных задач нужно не так Дельфю копать как внутреннее устройство винды)
Разницу без проблем сможете внести с помощью Delphi.
Автор: ShIvADeSt
Дата сообщения: 03.10.2009 01:51
SReg84

Цитата:
А насчет кода... так это видел... так что мне не очень то и повезло,т.к я гуглил пару часов перез тем, как задать вопрос. Он просто дублирует П.К.М. на *.inf -> "Install", но в реестре, к примеру я не нахожу тех ключей, которые прописаны в нём(.inf). через tRegistry прописать геморно как то, тк. ключей разных видов туева хуча... Вот я и подумал, может кто то сталкивался с подобной проблемой?

В девайс менеджере устройство появилось (например в скрытых)? Если да, то вопрос решен, если нет - то установи драйвер как надо (через установку оборудования), перед этим сделав снимок реектра, после установки сравни со снимком. Разницу сравни стем случаем, когда ты ставишь через ПКМ Istall. И вот эту разницу вручную добавляй в реестр. Я так понимаю -тебе главное результат.
Автор: UshastikChB1
Дата сообщения: 03.10.2009 12:16
подскажите, пожалуйста, чтон-нибудь дельное где можно почитать по SQL в DELPHI. Как с ним работать через Query, да и вообще. когда писал на php как-то было проще)))))
Автор: YuriyRR
Дата сообщения: 04.10.2009 03:53
UshastikChB1
"Фаронов Шумаков Базы данных.djvu"
http://slil.ru/28040511
Автор: GPSGURU
Дата сообщения: 05.10.2009 07:01
Всем привет. У меня вопрос по делфи.
В моей программе, которую я пишу, есть параметры, которые необходимо наблюдать: некоторые поля БД, значения переменных и т.д. Также в программе есть действия (функции), которые можно выполнить: послать почту, вывести сообщение, записать в лог и т.д. Вопрос: как организовать для пользователя создания "связок" наблююдаемый параметр - действие? Например, пользователь выбирает параметры которые нужно отслеживать (например значения 2-х полей БД, допустим поля булевые) и если оба поля сработали (равны true), то выполнить действие (например послать почту с сообщением). Проблема в том, что я даже не знаю как подойти к этой задаче, с какого боку. Как организовать возможность делать такие цепочки событий-срабатываний? Помогите кто может, у кого есть практика, может где-то описано это уже.
Автор: volser
Дата сообщения: 05.10.2009 10:31
GPSGURU
Какая СУБД? Для общего случая по таймеру читать данные с базы и делать необходимые действия.
Автор: OOD
Дата сообщения: 05.10.2009 13:18
даже не знаю где писать или в теме про антивирус или тут:
проблема такая антивирус NOD3 начал ругаться на некоторые программы написаныы ранее на делфи, подумал что возможно хитрый вирус заразил Delphi 7 и теперь он компилирует сразу с вирусами, было переустановлено (ОС,новый nod4 с поледними базами, Delphi 7) теперь компилирую программу , антивирус орет на Win32/TrojanClicker.Delf.NHJ как быть может в делфи нужно как-то компилировать файлы с другим кодированием?
Автор: data man
Дата сообщения: 05.10.2009 13:33
OOD

Цитата:
подумал что возможно хитрый вирус заразил Delphi 7

Так и есть
Delphi-“вирус”: проверьте свою установленную Delphi!
Virus.Win32.Induc.a: энцать дней спустя (FAQ)
Дабы сократить время на чтение

Цитата:
Проверьте свои установки Delphi (версий с 4 по 7 включительно) и, если найдёте у себя SysConst.bak, выполните следующие действия:
Удалите SysConst.dcu
Скопируйте SysConst.bak в SysConst.dcu. Важно именно скопировать, а не переименовать, чтобы SysConst.bak тоже остался на диске - это убережёт систему от повторного заражения, т.к. вирус не производит заражения, если находит SysConst.bak, считая, что свою работу он уже выполнил.
Автор: GPSGURU
Дата сообщения: 05.10.2009 13:35
Как вариант используйте EurekaLog, там есть функция шифрования файла (антиотладочные приемы). Возможно антивирус срабатывает на какую-то сигнатуру.
Автор: OOD
Дата сообщения: 05.10.2009 13:41
data man
SysConst.bak нету , делфи переставил с нуля , скорее всего дело в квипе т.е. его версий было установлено множество.
Автор: data man
Дата сообщения: 05.10.2009 13:46
OOD
Ну тогда отлавливать ProcessMonitor'om, какая из программ запускает dcc32.exe
Если SysConst.bak нет, возможно и модификации уже появились - столько шуму поднялось из-за этого "вируса"

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Clipper 5


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