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

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


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

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

Выпуск № 596
от 18.09.2006, 21:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 375, Экспертов: 60
В номере:Вопросов: 7, Ответов: 10


Вопрос № 55204: Здраствуйте!!! Скажите как можно сделать так чтобы полудуплексные устройства в Combobox`e были синего цвета ,а полнодуплексные зелёного, вообщем вопрос только о прорисовке! И есть ли какой-нибудь более гуманный способ определить полнодуплексн...
Вопрос № 55209: Здравствуйте уважаемые эксперты!!! Подскажите пожалуйста, где можно почитать об использовании ActionManager, желательно еще исходник посмотреть. Самому разобраться не получилось, а навязать ToolButton горячие клавиши надо бы. Спасибо....
Вопрос № 55237: Здраствуйте уважаемые эксперты! Помогите мне пожалуйста! У меня Table база данных, необходимо создать индекс, а в конце программы удалить его! Большое спасибо!...
Вопрос № 55255: Добрый день, уважаемые Эксперты! В программе требуется передать определенный файл по протоколу FTP на заданный FTP-сервер. Как осуществить передачу файла - разобрался(пример в Indy). Подскажите как сделать, что бы прога проверила подключен ли инт...
Вопрос № 55259: Доброго времени. Разрабатываем ПО (Dephi 6, WIN XP SP1), использующее для обмена 485 интерфейс (15 Mбит PCI плата,-высокоскоростной аналог rs-232).Компонет для обмена AsyncPro.Проблема в том,что на скоротях считывания >4Мбит начинают теряться данн...
Вопрос № 55317: Доброго времени суток. Вроде простая задача, но не могу решить: как из программы запустить командную строку DOS?...
Вопрос № 55332: Здравствуйте уважаемые эксперты!!! В процедуре OnClose (для Form1) применил такой код (в цикле): with TEdit(findComponent('Edit'+inttostr(i))) do free. После чего программа (во время работы и закрытия формы) выдала такое сообщение: …excep...

Вопрос № 55.204
Здраствуйте!!!
Скажите как можно сделать так чтобы полудуплексные устройства в Combobox`e были синего цвета ,а полнодуплексные зелёного, вообщем вопрос только о прорисовке!
И есть ли какой-нибудь более гуманный способ определить полнодуплексное аудио устройство или нет,не гуманный это:
Если при попытки открыть устройство и на In и на Out и вылетит ошибка значит не полнодуплексное???!
Отправлен: 12.09.2006, 21:02
Вопрос задал: chikanok (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: n0name
Здравствуйте, chikanok!
Тебе придется самостоятельно перерисовывать ComboBox.
В VCL OnDrawItem, в WinAPI ловишь в радительском окне WM_DRAWITEM И WM_MEASUREITEM.
Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 12.09.2006, 22:21


Вопрос № 55.209
Здравствуйте уважаемые эксперты!!! Подскажите пожалуйста, где можно почитать об использовании ActionManager, желательно еще исходник посмотреть. Самому разобраться не получилось, а навязать ToolButton горячие клавиши надо бы. Спасибо.
Отправлен: 12.09.2006, 21:18
Вопрос задал: Piit (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Zлоумышленник
Здравствуйте, Piit!
ToolButton можно подцепить на элемент главного меню с гор. клавишей.
Об ActionManager можно почитать у Марко Кэнту "Delphi 7 для профессионалов". Там офигенный исходник.
Книжку возьмёшь сдесь: http://webmate.com.ru/ebooks/book100.html?action=results&poll_ident=6
Исходники с сайта автора.
Ответ отправил: Zлоумышленник (статус: 10-ый класс)
Ответ отправлен: 12.09.2006, 21:34
Оценка за ответ: 5

Отвечает: n0name
Здравствуйте, Piit!
Исходники можешь посмотреть в папке с примерами которые идут вместе с Delphi.
В Delphi7 точно есть, если ты конечно при установке не отрубил копирование их.
Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 12.09.2006, 22:23
Оценка за ответ: 4


Вопрос № 55.237
Здраствуйте уважаемые эксперты! Помогите мне пожалуйста!
У меня Table база данных, необходимо создать индекс, а в конце
программы удалить его! Большое спасибо!
Отправлен: 13.09.2006, 02:04
Вопрос задал: Luminarc (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Luminarc!
У базы данных нет индексов, индексы есть у таблиц. Поэтому приведу пример создания индекса для таблицы Table. Поскольку Вы не захотели сказать, какого типа у Вас база данных, то придется применять универсальный язык SQL и соответствующий компонент для него - TQuery.
Кладете на форму компонент, в свойство DatabaseName прописываете имя Вашей базы данных (если она определена в BDE), Потом:
- для построения индекса
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:='CREATE INDEX Название_Индекса ON Название_Таблицы (А здесь записываете индексное выражение. В простейшем случае это будет название поля, по которому строится индекс)
{Например индекс по полю Main_id}
Query1.SQL.Text:='CREATE INDEX Main_id ON Table (Main_id)';
Query1.SQL.ExecSQL; {Строим индекс}
- удаление индекса
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:='DROP INDEX Main_id';
Query1.SQL.ExecSQL; {Удаление}
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 13.09.2006, 06:53


Вопрос № 55.255
Добрый день, уважаемые Эксперты!
В программе требуется передать определенный файл по протоколу FTP на заданный FTP-сервер. Как осуществить передачу файла - разобрался(пример в Indy). Подскажите как сделать, что бы прога проверила подключен ли интернет и если нет, то установила бы соединение. Желательно при этом выбрать подключение. Очень буду рад примеру.
Заранее благодарен.

Приложение:

Отправлен: 13.09.2006, 10:06
Вопрос задал: Дмитрий Александрович (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Coupler
Здравствуйте, Дмитрий Александрович!
Вот как проверить, подключен ли компьютер к интернету:
1 способ:
function IsConnectedToInternet: Boolean;
var
dwConnectionTypes: DWORD;
begin
dwConnectionTypes:=
INTERNET_CONNECTION_MODEM +
INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
Result:= InternetGetConnectedState(@dwConnectionTypes, 0);
end;
procedure TForm1.XiButton1Click(Sender: TObject);
begin
if IsConnectedToInternet then showmessage ('Y') else showmessage ('N');
end;
2 способ:
function GetConnect(var strKind: string): Boolean;
var
flags: DWORD;
begin
strKind := '';
Result := InternetGetConnectedState(@flags, 0);
if Result then
begin
if (flags and 1) = 1 then strKind := 'Modem';
if (flags and 2) = 2 then strKind := 'LAN';
if (flags and 4) = 4 then strKind := 'Proxy';
if (flags and 8) = 8 then strKind := 'Modem Busy';
end;
end;
procedure TForm1.XiButton2Click(Sender: TObject);
var strkind:string;
begin
if GetConnect(strKind) then
ShowMessage('есть')
else
ShowMessage('нету');
end;
По поводу соединения: сообщите мне свой e-mail (по вн.почте или в мини-форуме), я вам вышлю проект или сами поищите в сети файл d_ras.zip.
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 13.09.2006, 14:06
Оценка за ответ: 3
Комментарий оценки:
Спасибо, но, к сожалению, оба предложенных Вами варианта правильно не работают. На машине, непосредственно подключенной к интернету, через WDSL модем получаем Есть - Modem. На машине не подключенной к сети (выдернут сетевой кабель) все равно есть - Lan. Вопрос остается открытым.

Отвечает: n0name
Здравствуйте, Дмитрий Александрович!
Можно пропинговать www.ru, можно использовать InetIsOffline или InternetCheckConnection.

Приложение:

Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 13.09.2006, 16:48


Вопрос № 55.259
Доброго времени. Разрабатываем ПО (Dephi 6, WIN XP SP1), использующее для обмена 485 интерфейс (15 Mбит PCI плата,-высокоскоростной аналог rs-232).Компонет для обмена AsyncPro.Проблема в том,что на скоротях считывания >4Мбит начинают теряться данные,причем количество потерянной информации зависит от производительности конкретного ПК.Что делать?То ли Винда не успевает,то ли AsyncPro не рассчитан..Поделитесь опытом.
Отправлен: 13.09.2006, 11:23
Вопрос задал: Миша. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Zлоумышленник
Здравствуйте, Михон!
На таких скоростях скорее всего не успевает Винда. Я с AsyncPro не работал, поэтому тонкстей реализации не знаю. Не так давно обмен через RS-232 делал на чистом API. Там была следующая схема: отдельный поток считывал данные с порта в буфер определённой длины; при заполнении буфера выделялась область памяти, в которую сбрасывался буфер с последующей очисткой (буфера); посылалось пользовательское сообщение основному процессу с адресом памяти с данными буфера; в основном потоке данные обрабатывались и память освобождалась. И всё это повторялось снова.
Данные шли плотным потоком и приложение захлёбывалось, если передавать данные сразу, без заполнения буфера.
Вывод: посмотрите, есть ли в AsyncPro что-то типа буфера и свойства логического,которое бы указывало, передавать данные сразу или только после заполнения буфера.
Ответ отправил: Zлоумышленник (статус: 10-ый класс)
Ответ отправлен: 13.09.2006, 19:46
Оценка за ответ: 4


Вопрос № 55.317
Доброго времени суток. Вроде простая задача, но не могу решить: как из программы запустить командную строку DOS?
Отправлен: 13.09.2006, 18:08
Вопрос задал: Elpher2006 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: n0name
Здравствуйте, Elpher2006!
ShellExecute(0, 'open', 'cmd.exe', nil, nil, SW_NORMAL);

подключить модуль ShellApi;
Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 13.09.2006, 18:32

Отвечает: Маренич Владимир
Здравствуйте, Elpher2006!

Посмотрите простую функцию WinExec:

h:=WinExec('C:prog1.exe /x /y /z', SW_SHOWNORMAL);
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 13.09.2006, 19:10


Вопрос № 55.332
Здравствуйте уважаемые эксперты!!!
В процедуре OnClose (для Form1) применил такой код (в цикле):
with TEdit(findComponent('Edit'+inttostr(i))) do free. После чего программа (во время работы и закрытия формы) выдала такое сообщение:
…exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000'. Process stopped. Use Step or Run to continue.
И такое сообщение (при другом запуске программы):
…exception class EInvalidOperation with message 'Control '' has no parent window'. Process stopped. Use Step or Run to continue.
Метод Free применяю только в процедуре OnClose и нигде больше.
Что делать в этом случае? Спасибо за внимание.
Отправлен: 13.09.2006, 19:43
Вопрос задал: Piit (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

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

Функция FindComponent не нашла какого-то из Edit-ов - тогда ее результат nil
Правда, метод Free ругаться не должен в этом случае... Нет ли выше случайно еще какой-либо строки, обращающейся к Edit-у таким же образом?
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 5-ый класс)
Ответ отправлен: 13.09.2006, 19:52
Оценка за ответ: 5


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное