Вопрос № 45995: Здравствуйте эксперты подскажите пожалуйста как можно заблокировать CDRom например на время записи диска....Вопрос № 45998: Здравствуйте!!! Имеется БД Microsoft Access в БД 2 поля 'Фамилия' и 'Количество правильных ответов'
и переменные string f:='Петров' и K:='3'
Можно ли как нибудь программно записать значения этих переменных в соответствующие поля БД. ...Вопрос № 46007: Здравствуйте Эксперты. Попробуйте обьяснить мне такую ситуацию:
У меня Delfi 7. Я устанавливаю на форму компонент RichEdit и загружаю в него файл в rtf формате, используя метод RichEdit1.Lines.LoadFromFile(). Иногда ( здесь самое главное слово ...Вопрос № 46008: Доброе время суток...
1. Не могу найти описание функций CreateEllipticRgn, CreateEllipticRgnIndirect. Желательно на русском языке...
2. А может есть более удобные функции для рисования заставок?...Вопрос № 46018: Может есть какая-то стандартная функция, которая возвращает true или false в зависимости от того, переменная (string) это IP адрес или адрес сервера ?
Пример :
127.0.0.1 – true
localhost - false
Вопрос № 46021: Добрый вечер, уважаемые! Скажите, как переопределить реакцию приложения на нажатие кнопок системного меню? В частности нужно, чтобы при нажатии на кнопки "свернуть" и "закрыть" приложение делалось бы просто невидимым....Вопрос № 46026: Здравствуйте! А вот в продолжение вопроса 46021 еще вопрос - как зделать, чтобы у свернутого приложения не было видно кнопочки в панели задач , чтобы
разворачивалось только из трея?...Вопрос № 46033: Добрый вечер подскажите пожалуйста при завершении работы какое сообщение посылает программам Windows мне его нада обработать. Не могли бы вы описать....Вопрос № 46036: вы не подсажете какой код на дельфи надо поставить, чтобы программа генерировала разный набор чисел(только чисел)....Вопрос № 46056:
Здравствуйте уважаемые эксперты! Каким образом можно обрабатывать двоичные числа, например деление или сложение по модулю 2?
Заранее благодарен....Вопрос № 46063: Здравствуйте уважаемые эксперты! Не могли бы помочь при решении одной задачи. Если упрощённо, то....Необходимо построить график зависимости A и B от C. При этом по определённой формуле рассчитываются эти A и B. Расчёт идёт A1, A2,...A10 и также ддля ...
Вопрос № 45.995
Здравствуйте эксперты подскажите пожалуйста как можно заблокировать CDRom например на время записи диска.
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Sergei__2006!
Читай тут:
http://delphiworld.narod.ru/base/cdrom_block.html
--------- Ответы на все вопросы - на сайте www.ya.ru :)
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 12.06.2006, 15:45 Оценка за ответ: 5
Вопрос № 45.998
Здравствуйте!!! Имеется БД Microsoft Access в БД 2 поля 'Фамилия' и 'Количество правильных ответов'
и переменные string f:='Петров' и K:='3'
Можно ли как нибудь программно записать значения этих переменных в соответствующие поля БД.
Отправлен: 12.06.2006, 15:45
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Проходящий Мимо
Здравствуйте, Rewer8!
Для этого Вам нужно знать, с какой таблицей базы данных будем работать. С вопроса этого не ясно.
Бросаем на форму компоненты доступа к базе данных ADOTable и ADOConnection1 с закладки ADO палитры компонентов Delphi. В ADOConnection1 заполняем значениями, например:
ADOConnection1.ConnectionString:=
'Provider=MSDataShape.1;Persist Security Info=False;Data Source=c:data.mdb;Data Provider=Microsoft.Jet.OLEDB.4.0';
ADOConnection1.LoginPrompt:=false;
ADOTable1.Connection:=ADOConnection1;
ADOTable1.TableName:='Student'; //название таблицы
Далее делаем так:
procedure TForm1.Button1Click(Sender: TObject);
var
f: string;
K: byte;
begin
try
//коннектимся к базе
ADOConnection1.Connected := true;
ADOTable1.Active := true;
except
//если не получилось, то прощаемся
Application.MessageBox('Невозможно подключиться к базе',
'Ошибка!', MB_ICONERROR);
exit;
end;
f := 'Петров';
K := 3;
//добавляем запись в таблицу
ADOTable1.Insert;
//или редактируем существующую запись ADOTable1.Edit;
//записываем значение в поля
ADOTable1.FieldByName('Фамилия').AsString := f;
ADOTable1.FieldByName('Количество правильных ответов').AsInteger := K;
//по этой команде запись пишеться в таблицу
ADOTable1.Post;
end;
Приблизительно так. Можно использовать другие компоненты, иной метод нахождения полей (например по индексу, если название полей состоит с русских букв), но суть проста: открыть базу, указать таблицу, сказать, что с ней будем делать, задать значение для полей, сделать post. Рекомендую Вам почитать что-то о теории баз данных и работе с ними. Удачи!
--------- Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 5-ый класс)
Ответ отправлен: 13.06.2006, 10:42 Оценка за ответ: 5
Вопрос № 46.007
Здравствуйте Эксперты. Попробуйте обьяснить мне такую ситуацию:
У меня Delfi 7. Я устанавливаю на форму компонент RichEdit и загружаю в него файл в rtf формате, используя метод RichEdit1.Lines.LoadFromFile(). Иногда ( здесь самое главное слово иногда, не должна же существовать неопределеность при выполнении одних и тех же операций) текст отображается как положено, а иногда вместо форматированного текста выскакивает обычный текст с видимыми тэгами форматирования, т.е. RichEdit ведет себя как обычный Memo. При том, если-даже, текст загрузился правильно, при попытке любой
операции требующей перерисовки компонента RichEdit, например RichEdit1.Refresh или RichEdit1.WordWrap, текст по-любому станет отображаться неправильно.
Заранее спасибо.
Отправлен: 12.06.2006, 17:06
Вопрос задал: KEOs (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Ерёмин Андрей
Здравствуйте, KEOs!
Попробуйте установить свойство PlainText в False - именно оно отвечает за то, будет ли отображаться оформление. Другого здесь ничего быть не может, разве что загружаемый файл имеет не rtf, а какой-то другой формат. Если первое не помогло, попробуйте пересохранить rtf через Wordpad.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Доброе время суток...
1. Не могу найти описание функций CreateEllipticRgn, CreateEllipticRgnIndirect. Желательно на русском языке...
2. А может есть более удобные функции для рисования заставок?
Отправлен: 12.06.2006, 17:06
Вопрос задал: FausTT (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ерёмин Андрей
Здравствуйте, FausTT!
Можете попробовать сделать splash screen с помощью Shaped Form: компонент для создания региона по маске и присвоения этого региона форме. Скачать >> --------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, FausTT!
Яндекс.ру Вам в помощь!
Функция CreateEllipticRgn
Описание:
function CreateEllipticRgn(X1, Y1, X2, Y2: Integer): HRgn;
Создает эллиптическую область, огpаниченную указанным пpямоугольником.
Паpаметpы:
X1, Y1: Веpхний левый угол огpаничивающего пpямоугольника.
X2, Y2: Пpавый нижний угол огpаничивающего пpямоугольника.
Возвpащаемое значение:
В случае успешного завеpшения - идентификатоp новой области; 0 - в пpотивном случае.
функция находится в файле gdi32.dll
Функция CreateEllipticRgnIndirect
Описание:
function CreateEllipticRgnIndirect(var Rect: TRect): HRgn;
Создает эллиптическую область, огpаниченную пpямоугольником, указанным в ARect.
Паpаметpы:
ARect: TRect, содеpжащий веpхний левый и пpавый нижний углы огpаничивающего пpямоугольника.
Возвpащаемое значение:
В случае успешного завеpшения - идентификатоp новой области; 0 - в пpотивном случае.
функция находится в файле gdi32.dll
Взято отсюда:
http://delphiworld.narod.ru/base/api_functions_c.html
Тут http://delphiworld.narod.ru/_syntax_.html
Есть справочник по API-функциям - [23]
--------- Ответы на все вопросы - на сайте www.ya.ru :)
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 12.06.2006, 17:17 Оценка за ответ: 5
Вопрос № 46.018
Может есть какая-то стандартная функция, которая возвращает true или false в зависимости от того, переменная (string) это IP адрес или адрес сервера ?
Пример :
127.0.0.1 – true
localhost - false
Отправлен: 12.06.2006, 18:30
Вопрос задал: source (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, source!
Адрес сервера тоже может быть IP адресом.
Предположу, что вы имели ввиду, доменное имя и IP-адрес.
Я думаю, их можно отличить по наличию или отсутствию латинских букв в имени.
У меня есть такая функция. Я ее писал для других целей, но вам она подойдёт.
Просто вставляету функцию в программу. Кидаете любой TEDIT на форму а потом ставите его в функцию как входной пораметр.
пример:
if not isip(myedit) then exit; //MyEdit:TEdit;
если нужно то входной параметр вы и сами замените на нужный.
Приложение:
Ответ отправил: Caleb (статус: 1-ый класс)
Ответ отправлен: 12.06.2006, 22:45 Оценка за ответ: 5
Вопрос № 46.021
Добрый вечер, уважаемые! Скажите, как переопределить реакцию приложения на нажатие кнопок системного меню? В частности нужно, чтобы при нажатии на кнопки "свернуть" и "закрыть" приложение делалось бы просто невидимым.
Отвечает: Татьяна
Здравствуйте, Савенко Вадим Иванович!
Для этого необходимо не перехватывать кнопки, а перехватывать сообщение WM_SYSCOMMAND
Пример в приложении
Приложение:
--------- Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 12.06.2006, 20:28 Оценка за ответ: 5
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Савенко Вадим Иванович!
Насчет перехвата нажатия на системные кнопки читай тут:
http://delphiworld.narod.ru/base/sys_buttons_down.html
От себя добавлю:
При попытке закрыть окно (не обязательно кнопкой закрытия окна, а также с помощью Alt+F4 и т.д.) возникает CloseQuery, поэтому Вы в процедуру Form OnCloseQuery можете написать CanClose:=false (т.е. запретить окну закрываться) и далее делать то, что Вам нужно, т.е. делать окно невидимым. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin
CanСlose:=false; end;
--------- Ответы на все вопросы - на сайте www.ya.ru :)
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 12.06.2006, 20:50 Оценка за ответ: 5
Отвечает: chikanok
Здравствуйте, Савенко Вадим Иванович!
Вот вам рабочая ваша процедура! По крайней мере у меня работает!
Удачи!
Приложение:
--------- Главное желание,а там разберёмся!
Ответ отправил: chikanok (статус: 2-ой класс)
Ответ отправлен: 13.06.2006, 08:34
Вопрос № 46.026
Здравствуйте! А вот в продолжение вопроса 46021 еще вопрос - как зделать, чтобы у свернутого приложения не было видно кнопочки в панели задач , чтобы разворачивалось только из трея?
Отвечает: chikanok
Здравствуйте, Савенко Вадим Иванович!
Хех! Зачем вам это?! Ваша процедура из вопроса 46021 вполне может это сделать!
Надо только её немного подправить!Смотрите мой ответ на вопрос 46021 :) или в приложение!
Приложение:
--------- Главное желание,а там разберёмся!
Ответ отправил: chikanok (статус: 2-ой класс)
Ответ отправлен: 13.06.2006, 08:37
Вопрос № 46.033
Добрый вечер подскажите пожалуйста при завершении работы какое сообщение посылает программам Windows мне его нада обработать. Не могли бы вы описать.
Отвечает: Jadd
Здравствуйте, Sergei__2006!
Там их несколько. Все зависит от того, что Вам необходимо. Думаю, что WM_QUERYENDSESSION вполне достаточно. Обработчик сообщения в программе должен вернуть true, если программа готова к завершению и false - если нет. В параметре сообщения lParam возвращается параметры выхода из системы:
ENDSESSION_LOGOFF, если просто пользователь просто закрывает свою сессию и 0, если выключает комп.
Удачи.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал) Адрес: Санкт-Петербург WWW:http://www.sport-diary.ru ICQ: 28260749 ---- Ответ отправлен: 12.06.2006, 22:20
Вопрос № 46.036
вы не подсажете какой код на дельфи надо поставить, чтобы программа генерировала разный набор чисел(только чисел).
Отправлен: 12.06.2006, 22:08
Вопрос задал: Ghora (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Ерёмин Андрей
Здравствуйте, Ghora!
За генерацию случайных чисел в Delphi отвечает функция Random(a). В данном случае будет сгенерировано число в интервале от 0 до a. Однако, перед первым использованием этой функции рекомендуется вызывать процедуру Randomize (без параметров), иначе каждый раз генерируемые числа будут одинаковыми. Для генерации числа в определённом диапазоне можно использовать сдвиг, например: A:=Random(10)+20; выдаст число в интервале от 20 до 30.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: Злоумышленник
Здравствуйте, Ghora!
{Любое ЧИСЛО от 7 до 13}
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
Randomize;//Инициализация генератора случ. величин
i := RandomRange(7,13);
Edit1.Text := IntToStr(i);
end;
//-------------------------------------
{В примере ниже СТРОКА из 14 цифр}
function Rand(MaxSimbols: Integer): String;
var
i: Integer;
s: String;
begin
If MaxSimbols < 1 then Exit;
Randomize;
for i := 1 to MaxSimbols do
S := S + IntTostr(RandomRange(0,9));
Result := s;
end;
Ответ отправил: Злоумышленник (статус: 9-ый класс)
Ответ отправлен: 12.06.2006, 22:39
Вопрос № 46.056
Здравствуйте уважаемые эксперты! Каким образом можно обрабатывать двоичные числа, например деление или сложение по модулю 2?
Заранее благодарен.
Отправлен: 13.06.2006, 00:09
Вопрос задал: Bober (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Bober!
В Delphi нет специального типа "двоичное число", но все побитовые операции можно применять ко всем целым числам (перечислимые типы типа char в них не входят).
Основные побитовые операции: and, or, not, xor (логические) shl, shr (побитовые сдвиги). Приоритеты и их описания смотрите в справочной системе Delphi. Отдельно скажу только, что надо помнить, о том, что приоритет у побитовых сдвигов самый низкий. По-моему, даже ниже, чем у сложения и вычитания.
Приложение:
Ответ отправил: Сухомлин Кирилл Владимирович (статус: 10-ый класс)
Ответ отправлен: 13.06.2006, 01:20 Оценка за ответ: 5 Комментарий оценки: Большое спасибо
Вопрос № 46.063
Здравствуйте уважаемые эксперты! Не могли бы помочь при решении одной задачи. Если упрощённо, то....Необходимо построить график зависимости A и B от C. При этом по определённой формуле рассчитываются эти A и B. Расчёт идёт A1, A2,...A10 и также ддля B1, B2...B10. Как лучше это рассчитать? Циклом? И как связать эту кучу получившихся формул с графиком?
Заранее спасибо...
Отправлен: 13.06.2006, 02:16
Вопрос задал: Pakxapo (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: sir henry
Здравствуйте, Pakxapo!
Фактически у Вас два малосвязанных друг с другом вопроса:
1. Каким образом хранить данные для графика,
2. Как строить график.
----------------------------------------
1. Если данных не сильно много, количество их заранее определено и все они однотипны, то для этого идеально подходит массив. Например:
var
TheData: array[0..1, 0..9] of integer;
Здесь объявляется двумерный массив целых чисел. Соответственно в первом измерении [0, 0..9] у Вас будет храниться 10 значениq А, а во втором измерении [1, 0..9] - 10 значений В.
В этом случае подставлять свои значения в формулу Вы можете в цикле:
For i:=0 To 9 Do
C:=TheData[0, i]+TheData[1,i]; {Что соответсвует формуле C = A + B}
Если количесвто данных заранее неопределено, но всетаки они однотипны, то можно для их хранения использовать динамический массив, а далее, когда в программе Вы определитесь с количеством данных, задаете размер этого массива и осуществляете ввод данных.
Если значения А и В разных типов, то можно использовать два массива, но идекс при подстановку данных из массива в формулу будет одни на всех.
При невозможности однозначно определиться с типом или количеством данных, лучше использовать какую-либо динамическую структуру с пошаговым добавлением значений, например TList. В этом случае цикл подстановки данных будет выглядеть так:
For i:=0 To TList.Count-1 Do
C:=List1.Items[i]+List2.Items[i];
Преобразование типов (т.к. в Items хранятся указатели) будет происходить Вами вручную в зависимости от того, какой тип данных Вы будете использовать.
2. Графика - это слишком обширный материал, чтобы отвечать на него здесь. Лучше бы Вам книжку купить. :)
Есть два способа построить график - использовать компонент TChart (будет как в Excel) и использовать компонент TImage (на его канве рисуются всевозможные примитивы - точки, линии, кружки и т.д.)
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 13.06.2006, 06:42
Отвечает: Олекса aka SoW
Здравствуйте, Pakxapo!
А и B лучше рассчитать в цикле, например
for i:=1 to 10 do
begin
А[i]:=cos(i); //A=cos C
B[i]:=i+3; //B=C+3
end;
Но если рассчитанных значений A и B не нужно хранить, то их можно вычислять при создании графика, так, как показано дальше.
Чтобы потом построить эту зависимость в виде графика, нужно сделать такую последовательность действий:
1) поставить на форму компонент TChart, дважды по нему щелкнуть
2) На закладке Series щелкнуть кнопку Add... и выбрать тип графика, например Line. Так нужно сделать дважды, поскольку нам нужны два графика: A(C) и B(C)
3) Дальше поданный пример, который строит графики функций синуса и косинуса. На его основе можно понять принцип работы с компонентом:
var i:real;
begin
Chart1.BottomAxis.Maximum:=100; //максимальноезначение по оси X
Chart1.BottomAxis.Minimum:=0; //минимальное значение по оси X
Chart1.LeftAxis.Maximum:=5; //максимальное значение по оси Y
Chart1.LeftAxis.Minimum:=-5; //минимальное значение по оси Y
i:=-10;
while i<=10 do
begin
Chart1.Series[0].AddXY(і,cos(i)); //прибавить точку с координатами (i, cos i)
Chart1.Series[1].AddXY(і,sin(i));
i:=i+0.1;
end;
end;
В Вашем случае нужно сделать, чтобы 'i' изменялось от минимального к максимальному значению 'С'.
В компонента TChart есть еще много параметров. Поексперементуйте с ими, и тогда все станет понятно.
--------- Вік живи - вік учись.
Ответ отправил: Олекса aka SoW (статус: 1-ый класс)
Ответ отправлен: 13.06.2006, 17:18