Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 958
от 19.10.2007, 08:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 459, Экспертов: 65
В номере:Вопросов: 3, Ответов: 5


Вопрос № 105314: Добрый день! Помогите разобраться с проблемой. Не могу получить в виде строки параметр из реестра: RegPath := 'HARDWAREDESCRIPTIONSystem'; rootkey := HKEY_LOCAL_MACHINE; 'SystemBiosVersion' Нашел подходящую процедуру (см. приложение), но при п...
Вопрос № 105360: Здравствуйте,уважаемые эксперты! Как заставить мою программу сворачиваться в трей? Я использую стандартный компонент TTrayicon, собственно, нужно, чтобы при сворачивании окна убиралась кнопка с панели задач. Как это сделать?...
Вопрос № 105371: Добрый день, уважаемые эксперты. Подскажите, пожалуйста, фрагмент дельфийского кода, позволяющего откыть определенный файл с помощью какой-либо программы. Например, файл music1.mp3 с помощью WinAmp или page1.html с помощью Intrnet Explrer. Во...

Вопрос № 105.314
Добрый день!
Помогите разобраться с проблемой. Не могу получить в виде строки параметр из реестра: RegPath := 'HARDWAREDESCRIPTIONSystem'; rootkey := HKEY_LOCAL_MACHINE; 'SystemBiosVersion' Нашел подходящую процедуру (см. приложение), но при попытке вывести информации выходит ошибка: Invalid Data type For 'SystemBoardVersion'

Приложение:

Отправлен: 13.10.2007, 15:53
Вопрос задал: Alex446 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Alex446!

Да действительно, ошибка имеет место быть. Я немного переделал код Вашей функции и все сразу заработало (произведенные изменения выделены цветом):

function ReadMultirowKey(reg: TRegistry; Key: string): TStrings;
{const bufsize = 100;} // у нас зарание не извесен размер структуры, поэтому не следут задавать его в константах, да и строка у нас в принципе то ограничена 255 символами.
var
i,bufsize: integer;
s1: string;
sl: TStringList;
bin: array[0..255] of char;
begin
try
result := nil;
sl := nil;
sl := TStringList.Create;
if not Assigned(reg) then
raise Exception.Create('TRegistry object not assigned.');
// FillChar(bin, bufsize, #0); - эту конструкцию заменил другой, смотрите следующую строку.
bufsize:=reg.GetDataSize(Key);
reg.ReadBinaryData(Key, bin, bufsize);
i := 0;
s1 := '';
while i < bufsize do
begin
if ord(bin[i]) >= 32 then
s1 := s1 + bin[i]
else
begin
if Length(s1) > 0 then
begin
sl.Add(s1);
s1 := '';
end;
end;
inc(i);
end;
result := sl;
except
sl.Free;
raise;
end;
end;


Good Luck!!!

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 13.10.2007, 17:27
Оценка за ответ: 5
Комментарий оценки:
Спасибо, все действительно нормально заработало. Просто у программы не хватало размера буфера в 100 байт. Стоило его увеличить и все сразу нормально заработало. И строка bufsize:=reg.GetDataSize(Key); определяет необходимый размер, это конечно более правильно, чем просто задать размер буфера в 100 байт.


Вопрос № 105.360
Здравствуйте,уважаемые эксперты!
Как заставить мою программу сворачиваться в трей? Я использую стандартный компонент TTrayicon, собственно, нужно, чтобы при сворачивании окна убиралась кнопка с панели задач. Как это сделать?
Отправлен: 13.10.2007, 22:28
Вопрос задал: Megalamer (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Проходящий Мимо
Здравствуйте, Megalamer!

В событии, например, TForm1.FormShow(Sender: TObject) пишем строку:
ShowWindow(Application.Handle, SW_Hide);

Удачи.
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 9-ый класс)
Ответ отправлен: 15.10.2007, 09:50
Оценка за ответ: 2
Комментарий оценки:
Даже не знаю. Кнопка будет убираться когда окно покажется, надо наооборот необходимо обрабатывать сообщение, когда окно деактивируется. procedure TForm1.FormDeactivate(Sender: TObject); begin showwindow(application.Handle,0); end; Тогда кнопка исчезает. и появляется при восстановлении окна. procedure TForm1.TrayIcon1Click(Sender: TObject); var r:trect; begin if not IsWindowVisible(Form1.Handle) then begin showwindow(application.Handle,SW_RESTORE); windows.GetWindowRect(bingochat.Handle,r); setwindowpos(bingochat.Handle,HWND_TOP,r.TopLeft.X,r.TopLeft.Y,0,0,swp_nosize or SWP_SHOWWINDOW or SWP_NOSENDCHANGING); application.BringToFront; bingochat.Repaint; end;end; Восстанавливаем окно на прежнее место. Но здесь есть существенный недостаток, если окно деактивизируется без сворачивания, то кнопка тоже исчезает. Необходимо найти АЛГОРИТМ обработки событий.


Вопрос № 105.371
Добрый день, уважаемые эксперты.
Подскажите, пожалуйста, фрагмент дельфийского кода, позволяющего откыть определенный файл с помощью какой-либо программы.
Например, файл music1.mp3 с помощью WinAmp или page1.html с помощью Intrnet Explrer. Возможны ли какие-либо программы по умолчанию, изначально понятные системе для файлов с определенным расширением.
Заранее благодарен.
----
С уважением, Владимир.
Отправлен: 14.10.2007, 00:41
Вопрос задал: Аверьянов Владимир (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Аверьянов Владимир!

Для данных действий Вам поможет ShellExecute(). Вот строки используя которые Вы сможите запустить выше перечисленные приложения:
...
ShellExecute(Handle,nil,'C:Program FilesInternet ExplorerIEXPLORE.EXE','c:page1.html',nil,SW_SHOWNORMAL); //запускаем Internet Explorer в качестве параметра у него выступает нужный файл
// ShellExecute(Handle,nil,'C:Program FilesWinampwinamp.exe','c:AudioA-HA.mp3',nil,SW_SHOWNORMAL); //аналогично для WinAmp-a
...


Только не забудте подключить модуть ShellApi (uses shellApi).

Замечание: Для корректной работы необходимо указывать ПОЛНЫЕ именя файлов и программ (полный путь к программе или файлу с указанием каталога расположения).

Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 14.10.2007, 01:16
Оценка за ответ: 5

Отвечает: Владик
Здравствуйте, Аверьянов Владимир!
//Запускаеться проигрователь по умолчанию и проигровает аудио файл
ShellExecute(Handle,'open','Путь к аудио файлу',nil,nil,SW_RESTORE);

или

ShellExecute(Handle,'open','c:audiofile.wav',nil,nil,SW_SHOWNORMAL);
Ответ отправил: Владик (статус: 1-ый класс)
Ответ отправлен: 14.10.2007, 08:39

Отвечает: PM_pilot
Здравствуйте, Аверьянов Владимир!
Для этих целей используется функция ShellExecute например так:
Shellexecute(handle, 'Open', 'Rundll32.exe', 'shell32.dll,Control_RunDLL TIMEDATE.CPL', Pchar(Getsystemdir), 0); - пример взят здесь - www.drkb.ru
Ответ отправил: PM_pilot (статус: 1-ый класс)
Ответ отправлен: 15.10.2007, 18:10
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.61.1 от 16.10.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное