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

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

Автор: HOUPE
Дата сообщения: 25.10.2006 05:11
oan42

Прошу прощение за откровенное ламерство - я с Delphi и SQL недавно общаюсь.
К примеру, какой оболочки?
Автор: RayZ
Дата сообщения: 25.10.2006 06:11
HOUPE, если пользуешься SQL SERVER то при нем должны быть утилиты по созданию запросов (Query Builder, etc...) и воответственно там же где то можно протестировать запросы...
Автор: RomanTim
Дата сообщения: 25.10.2006 06:49
HOUPE
С MSSQL 2000 идет QueryAnalyser. Как раз для выполнения SQL-запросов
Автор: HOUPE
Дата сообщения: 25.10.2006 07:01
RayZ, RomanTim

С QueryAnalyser я никогда не работал, но EnterpriseManager выполняет мои запросы в доли секунды, собственно поэтому я и не понимаю почему изночально моя прога так висеть начинает. Может дело не в запросах, а в объмах загружаемой в неё информации?

Автор: RomanTim
Дата сообщения: 25.10.2006 08:21
HOUPE
Ты попробуй в QueryAnalyser - EnterpriseManager вполне может засасывать не все данные, а постепенно
Автор: RostY
Дата сообщения: 25.10.2006 08:33
HOUPE
скорей всего тормоза из-за использования ADO. Ты не пробовал использовать компоненты для прямого доступа к базе (типа SDAC)
Автор: HOUPE
Дата сообщения: 25.10.2006 08:50
RomanTim

Попробывал с QueryAnalyser, таже история - данные вывел в доли секунды.

RostY

Честно говоря, не совсем понимаю о чем речь? Примерчик PLEASE?
Эти компоненты идут в стандартной комплектации?
Автор: RomanTim
Дата сообщения: 25.10.2006 09:10
HOUPE
С QA есть одна фишка - первые данные уже показывааются, а остальные продолжают идти, при этом счетчик времени тикает и горит кнопка "остановить" (красный квадрат)

Если запрос открывается быстро, то тогда смотри уже в программе - наверчено ли у тебя что-нибудь на DataSet (вычисляемые, lookup поля), куда эти данные потом отображаются...

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

Для еще более чистого эксперимента можно создать объект _Recordset (из модуля ADOInt) и получить данные в него - чтобы обойтись вообще без влияния VCL (параметры метода Open в MSDN)

RostY
Вообще то технология ADO это более облегченная по API обертка вокруг OLEDB, через которую и SDAC работает. За не один год пользования ADO-компонентами тормозов именно на них не встречалось
Автор: oan42
Дата сообщения: 25.10.2006 09:23
HOUPE
Поддерживаю RostY, имеет смысл попробовать SDAC,
граблей должно быть меньше.
[SQL Server] <-> [OLE DB] <-> [Client application]

На что нужно обратить внимание в компоненте TMSQuery:

1) FetchRows - число записей в пачке,
которые Server дает заглотить клиенту за одно открывание рта.

Выставь значение 200 для запросов с большим количеством возвращаемых записей.

2)Клиент может открывать рот либо пока все записи в себя не заглотит,
либо после первой пачки. Это регулируется свойством FetchAll.

3) PacketSize - просто попробуй поменять с 4096 на 32767.
Если лучше не станет, то верни назад.
Автор: RostY
Дата сообщения: 25.10.2006 09:44
HOUPE
компоненты в стандартной комплектации не идут, и примерчик не дам, так как не пишу для MS SQL server. Посмотри сдесь: _http://www.crlab.com/sdac/

RomanTim
возможно, ты и прав на счет SDAC, но при работе с Ораклом мне больше понравилось Direct Oracle Access, чем ADO
Автор: Andysoft3C
Дата сообщения: 25.10.2006 10:05
FireZone
Большое спасибо
Автор: ArtemiyUO
Дата сообщения: 25.10.2006 10:24
Еще проблемма может быть в установках SET которые проставляет кверианализер и АДО. Глянь в форуме СКЛ.РУ по дельфям, там такой вопрос встает каждую неделю.
http://sql.ru/forum/actualtopics.aspx?bid=20
Автор: vortex0220
Дата сообщения: 25.10.2006 18:51
я в первые в этой ветке форума.

у меня есть пару вопросов.
1. Как запускать приложение с заданым приоритетом?
2. Не нашел как показывать в трее хинт. Не тот что вылазит при наведении мыши на иконку. а например тот что выскакивает при окончании места на диске.
как это сделать средствами дельфи.
спасибо
Автор: RomanTim
Дата сообщения: 25.10.2006 22:29
vortex0220
1. Смотри функции API: Запуск приложения - CreateProcess, приоритет - SetPriorityClass, SetThreadPriority
2. Например с помощью компонента CoolTrayIcon http://subsimple.com/delphi.asp
Автор: Jokerjar
Дата сообщения: 25.10.2006 23:35

Цитата:
Как запускать приложение с заданым приоритетом?

Если, твое, то так:

procedure TForm1.Button1Click(Sender: TObject);
var
ProcessID: DWORD;
ProcessHandle: THandle;
ThreadHandle: THandle;
begin
ProcessID := GetCurrentProcessID;
ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION,
false, ProcessID);
SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS);
ThreadHandle := GetCurrentThread;
SetThreadPriority(ThreadHandle, THREAD_PRIORITY_TIME_CRITICAL);
end;

По поводу хинта, я делаю вот [more=так
]function DZBalloonTrayIcon(const Window: HWND; const IconID: Byte; const Timeout: TBalloonTimeout; const BalloonText, BalloonTitle: String; const BalloonIconType: TBalloonIconType): Boolean;
type
NotifyIconData_50 = record // определённая в shellapi.h
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array[0..MAXCHAR] of AnsiChar;
dwState: DWORD;
dwStateMask: DWORD;
szInfo: array[0..MAXBYTE] of AnsiChar;
uTimeout: UINT; // union with uVersion: UINT;
szInfoTitle: array[0..63] of AnsiChar;
dwInfoFlags: DWORD;
end{record};
const
NIF_INFO = $00000010;
NIIF_NONE = $00000000;
NIIF_INFO = $00000001;
NIIF_WARNING = $00000002;
NIIF_ERROR = $00000003;
aBalloonIconTypes : array[TBalloonIconType] of Byte = (NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR);
var
NID_50 : NotifyIconData_50;
begin
FillChar(NID_50, SizeOf(NotifyIconData_50), 0);
with NID_50 do begin
cbSize := SizeOf(NotifyIconData_50);
Wnd := Window;
uID := IconID;
uFlags := NIF_INFO;
StrPCopy(szInfo, BalloonText);
uTimeout := Timeout * 1000;
StrPCopy(szInfoTitle, BalloonTitle);
dwInfoFlags := aBalloonIconTypes[BalloonIconType];
end{with};
Result := Shell_NotifyIcon(NIM_MODIFY, @NID_50);
end;[/more].

Автор: vladk1973
Дата сообщения: 26.10.2006 05:52
HOUPE

Цитата:
Попробывал с QueryAnalyser, таже история - данные вывел в доли секунды.

Оценить время выполнения запроса можно, натравив Profiler, тоже идет вместе с SQL Server-ом
Заодно посмотришь, чем еще твой сервер занимается
Автор: deadbitch
Дата сообщения: 26.10.2006 08:26
Форумчане, кто-нибудь разбирался с XML-RPC + Дельфи? Судя по интернету для этого дела есть всего два либа - XML-RPC for Delphi и XMLWorks, обе либы мертвы с 2002 года, соответсвенно с BDS 2006 не дружат
Автор: oan42
Дата сообщения: 26.10.2006 09:24
deadbitch На всякий случай:

1) Либа Delphi XML-RPC или (XML-RPC for Delphi), что лежит на
http://sourceforge.net/projects/delphixml-rpc
датирована своими исходниками 21.04.2004

2)Исходники на CVS поновее будут на 1-2 года.
Качать через WinCVS.

3)Сам не работал с XML-RPC.
Автор: vshersh
Дата сообщения: 26.10.2006 09:30
deadbitch

Цитата:
XML-RPC (сокр. от англ. Extensible Markup Language Remote Procedure Call — XML-вызов удалённых процедур) — основанный на XML стандарт (протокол) вызова удалённых процедур, является прародителем SOAP

Юзай SOAP!
Автор: cryptonium
Дата сообщения: 26.10.2006 10:08

Цитата:
Юзай SOAP!


XML-RPC более легкий и простой, SOAP же не всегда нужен. Не говоря уже о том что много чего сделано на XML-RPC...
Автор: Jokerjar
Дата сообщения: 27.10.2006 02:26
Все мы знаем программу Winamp. Так вот, в ее настройках есть вкладка "вывод", в ней - "DirectSound Output". У этой штуковины, в свою очередь, тоже есть настройки. Так вот, на вкладке "fading" есть 5 параметров (on start, on pause/stop) и т.д. Необходимо написать программу, которая бы, скажем, при нажатии на кнопку отключала все эти 5 параметров, а при повторном нажатии - опять включала. У меня есть список сообщений, которых можно послать винампу, но ничего подходящего я не нашел. Поэтому прошу помощи
Автор: RayZ
Дата сообщения: 27.10.2006 03:40
Jokerjar, а может проще будет передавать управление WaveOut, и потом обратно DirectSound Output?
Автор: Jokerjar
Дата сообщения: 27.10.2006 06:38
RayZ, возможно. Это нужно не мне, человек работает в ресторане диджеем типо, надо по несколько раз менять эти настройки, а они глубоковато находятся, да еще и пять штук сразу.

Ну а как тогда реальизовать передачу управления? В API сообщениях, которые поддерживает винамп ни того, ни другого я не нашел...

Да, я нашел, где хранятся эти настройки. Следовательно мне всего лишь надо уведомить как то винамп перечитать их. Но как? Похожего сообщения тоже нет
Автор: ShIvADeSt
Дата сообщения: 27.10.2006 07:59
Jokerjar

Цитата:
Да, я нашел, где хранятся эти настройки. Следовательно мне всего лишь надо уведомить как то винамп перечитать их. Но как? Похожего сообщения тоже нет

Плагин апи отдельная песня, так напрямую с плагинами работать нельзя. Есть подозрение, что придется писать собственный плагин, который позволит это делать (плагинам можно некоторые вещи друг с другом делать) одно время просматривал список сообщений, у плагинов их больше. Но так же возможно, что нельзя это вообще сделать, если в винампе все таки, подобные вещи не предусмотрены для всех дейтсвий плагинов.
ЗЫ. лучше это сделать отдельной темой, ибо все таки довольно таки специфическая тема.
Автор: Andysoft3C
Дата сообщения: 27.10.2006 09:38
привет всем.
Никто не знает как можно преобразовать hex в real
т.е.

я получаю с Com порта последовательность байтов
например 4B3B01AEA2 как это перевести в вещественное число
Автор: HOUPE
Дата сообщения: 27.10.2006 09:52
Спасибо всем кто поучаствовал в моей проблеме.
Время запроса составляет 1 сек, время загрузки окна проги 2 сек. Глазу конечно не очень нравится, но все равно лучше чем было раньше.
Автор: vladk1973
Дата сообщения: 27.10.2006 09:55
Andysoft3C
Может этот топик натолкнет
http://www.vbnet.ru/forum/show.aspx?id=15315
Автор: OdesitVadim
Дата сообщения: 27.10.2006 10:04
HOUPE
Добавь ещё одно окошко с прогресс баром и надписью "секундочку".
Хоть это и притормозит программу, но визуально для пользователя ускориться. А если анимашку красивую прицепить, то вообще запрос будет "моментально" выполнятся
Автор: RayZ
Дата сообщения: 27.10.2006 10:23
Andysoft3C, стандарт IEEE754?


Код:
var
mysingletemp:integer;
mysinglep:PSingle;
mysingle:single;
begin
mysingletemp:=$43CC70AC;
mysinglep:=@mysingletemp;
mysingle:=mysinglep^;
floattostr(mysingle);
end;
Автор: vladk1973
Дата сообщения: 27.10.2006 10:29
RayZ

Цитата:
mysingletemp:=$43CC70AC;

Не понял, вы как переменную то будете переводить ?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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