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

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


Информационный Канал Subscribe.Ru


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

Выпуск № 097
от 10.11.2002, 09:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 268
Отправлено ответов: 481
Активность: 179.4 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Рыжик
Статус: Начальный
Общий рейтинг: 115.62
[Подробней >>]
Vladimir
Статус: Опытный
Общий рейтинг: 110.36
Телефон: (08242) 43599 40099 раб 41255 дом
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.6
[Подробней >>]
 
Jadd
Статус: Профессиональный
Общий рейтинг: 143.76
[Подробней >>]
Necro
Статус: Доверительный
Общий рейтинг: 110.87
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 114.86
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
 
Idle Sign
Статус: Доверительный
Общий рейтинг: 145.78
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 258. Приветствую, вас, эксперты. Подскажите, как в Дельфях пользоваться генератором случайных чисел (необ... (ответов: 3)
Вопрос № 259. Здравствуйте ув. эксперты!!! Как можно сделать чтобы ProgressBar показывал прогрес копирования каког... (ответов: 2)
Вопрос № 260. Доброе время суток, эксперты. Некой переменной X необходимо присвоить здачение текущего времени, точ... (ответов: 5)
Вопрос № 261. Всем привет! У меня вот какой вопрос: как можно получить доступ к дисководу на уровне секторов//доро... (ответов: 1)
Вопрос № 262. Здрвствуйте! Скажите пожалуйста как сделать так чтобы в DBgrid выделялась вся строка(как в listbox) ... (ответов: 2)
Вопрос № 263. Подскажите пожалуйста как определить печатает принтер или нет. Надо остановить прогу на время печати... (ответов: 1)
Вопрос № 264. Доброе время суток, эксперты. Вопрос: Как самому сделать процедуру, т.е. как в Паскале, процедура с... (ответов: 3)
Вопрос № 265. Здравствуйте ув.Эксперты!!! Как можно сделать чтобы при копировании файла, когда совпадает имя файла... (ответов: 2)
Вопрос № 266. как сделать прогу невидимой в task bar? и засунуть в systray? Electronic... (ответов: 2)

Вопросов: 9, ответов: 21


 Вопрос № 258

Приветствую, вас, эксперты.
Подскажите, как в Дельфях пользоваться
генератором случайных чисел
(необходимо сгенерить 4-х значное число)
И ещё вопрос: как сделать задержку на X секунд?
Заранее благодарю.



Вопрос отправлен: 05.11.2002, 10:43
Отправитель: Iv

[Следующий вопрос >>] [Список вопросов]

Отвечает Рыжик

Доброе время суток, Iv!
Генератор случайных чисел:
var
I: Integer;
begin
Randomize;//инициализируем генератор
I := Random(10000);//0<=I<10000 (4-х значное)
ShowMessage(Format('%.4d',[I]));
end;
Задержка:
Sleep(5000);//5 секунд


Ответ отправлен: 05.11.2002, 11:48
Отправитель: Рыжик


Отвечает Vladimir

Приветствую Вас, Iv!
while int<1000 do begin
Randomize;
int:=Random(9999);
end;//Это генератор квазислучайных чисел
Sleep(n);// задержка на n милисекунд


Ответ отправлен: 05.11.2002, 11:04
Отправитель: Vladimir


Отвечает vitya

Здравствуйте, Iv!
Для генерации случайных чисел пользуйся стандартной функцией: random().
В начале программы надо вызвать randomize();
Для того, чтобы генерить четырехзначное число надо сделать так:
wRand := random(9000) + 1000;
в данном случае ты получишь числа в диапазоне от 1000 до 9999.
Для того, чтобы получить задержку вызывай АПИшную функцию Sleep(mseks);


Ответ отправлен: 05.11.2002, 15:38
Отправитель: vitya


 Вопрос № 259

Здравствуйте ув. эксперты!!!
Как можно сделать чтобы ProgressBar показывал прогрес копирования какоготонибуть файла?!
Заранее благодарю!!!



Вопрос отправлен: 05.11.2002, 15:48
Отправитель: Elvis

[Следующий вопрос >>] [Список вопросов]

Отвечает Jadd

Добрый день, Elvis!
Используй функцию WinAPI CopyFileEx. Это первая и самая простая возможность. Другая - с помошью стандартных функций ввода-вывода. Один шаг ProgressBar = Одина операция чтения-записи. Колличество шагов ProgressBar= Размер файла/размер буфера для одной операции чтения-записи. Но это муторней. Лучше CopyFileEx. Там есть свой колбэк, который и позволяет все это делать с прогрессбаром.

Ответ отправлен: 05.11.2002, 16:08
Отправитель: Jadd


Отвечает Vladimir

Приветствую Вас, Elvis!
Ну, если только файлы копировать самому побайтно. Вот тогда определяешь размер файла и, при копировании, выводишь все в ProgressBar.


Ответ отправлен: 05.11.2002, 16:01
Отправитель: Vladimir


 Вопрос № 260

Доброе время суток, эксперты.
Некой переменной X необходимо присвоить
здачение текущего времени, точнее
говоря секунд, подскажите как.



Вопрос отправлен: 05.11.2002, 16:07
Отправитель: Iv

[Следующий вопрос >>] [Список вопросов]

Отвечает Vladimir

Добрый день, Iv!
var
X:integer;
s:String;
begin
s:=FormatDateTime('ss',Now);
X:=StrToInt(s);
end;


Ответ отправлен: 05.11.2002, 16:18
Отправитель: Vladimir


Отвечает vitya

Здравствуйте, Iv!
Сделай вызор: GetSystemTime() или GetLocalTime();
Структура, которую они заполняют, содержит необходимое тебе поле.

Ответ отправлен: 05.11.2002, 17:24
Отправитель: vitya


Отвечает Jadd

Добрый день, Iv!
Очень просто. Делать можно, например, так:
var x: String;
begin
x:= FormatDateTime('ss', Now);
Label1.Caption = x;
end;
Этот кусок кода будет брать текущее время в секундах и показывать его в лэйбле.

Ответ отправлен: 05.11.2002, 16:13
Отправитель: Jadd


Отвечает Necro

Приветствую Вас, Iv!


Приложение:

Ответ отправлен: 05.11.2002, 17:24
Отправитель: Necro


Отвечает Рыжик

Добрый день, Iv!
procedure TForm1.Button1Click(Sender: TObject);
var t:TDateTime;
Hour,Min,Sec,MSec:Word;
begin
t:=Time;
DecodeTime(t,Hour,Min,Sec,MSec);
//теперь переменная Sec содержит кол-во секунд
ShowMessage(IntToStr(Sec));
end;


Ответ отправлен: 06.11.2002, 10:17
Отправитель: Рыжик


 Вопрос № 261

Всем привет!
У меня вот какой вопрос: как можно получить доступ к дисководу на уровне секторов//дорожек и т.д., подобно int 13h в DOS, таким образом чтобы можно было читать//писать//форматить дискеты более других форматов нежели пц, например 80 дорог 2 стороны 32 сектора по 128 байт?
Если такое возможно, то не сочтите за труд написать небольшой примерчик кода для подобных извращений (в смысле не работу с файловой системой, а только чтение//запись секторов и форматирование дорожек)...
Заранее спасибо за помощь...



Вопрос отправлен: 05.11.2002, 16:14
Отправитель: TIMON

[Следующий вопрос >>] [Список вопросов]

Отвечает Jadd

Приветствую Вас, TIMON!
Вообще, это вещь довольно опасная. Поищи в рассылке, тут подобный вопрос задавался уже. Для таких манипуляций используй WinAPI. Функция CreateFile дает полный доступ к диску. Вместо параметра filename используй запись типа "\PHYSICALDRIVEx", где х - номер драйва или можно явную запись использовать типа "\A:". Вся остальная инфа в MSDN

Ответ отправлен: 05.11.2002, 16:28
Отправитель: Jadd


 Вопрос № 262

Здрвствуйте!
Скажите пожалуйста как сделать так чтобы в DBgrid выделялась вся строка(как в listbox) а не только единственное поле? Еще как вывести записи базы данных в DBlistbox при этом используя Table и DataSource. Надеюсь вы поняли. Спасибо!



Вопрос отправлен: 05.11.2002, 21:37
Отправитель: dude

[Следующий вопрос >>] [Список вопросов]

Отвечает baldr

Добрый день, dude!
У DBGrid есть в свойствах (см в Инспекторе Объектов) такое поле как Options. Оно содержит
подпункты. Сейчас не помню точно, но вроде есть такое: AlwaysSelectRow (или как-то так).
Вообще, из всех стандартных визуальных компонентов для работы с базами данных в Delphi я
использую только DBGrid, причем с запрещенным редактированием внутри.
Все остальные компоненты очень любят вызывать исключения при малейшем нарушении правил ввода...
Так, для ввода данных в таблицу я использую несколько стандартных Edit'ов, ComboBox'ов и
ListBox'ов. Обрабатываю все вручную - это все же легче, чем ловить исключения от глючных
компонентов. Такой способ не запрещен, более того, он даже в книгах рассматривается.
Это я тебе насчет DBListBox. А вообще, там надо просто указать в поле DataSource твой TDataSource,
причем везде не забудь поставить свойство Active и Enabled... В DBListBox укажи, какие поля ты
хочешь отображать... Вроде все... Сорри, если что напутал - писал по памяти, лень делфу грузить.
Если что - спрашивай еще - поможем...


Ответ отправлен: 05.11.2002, 23:03
Отправитель: baldr


Отвечает Jadd

Приветствую Вас, dude!
Значит, насчет первого: там свойство у грида есть. Ставится оно в Options. А называется dgRowSelect

Ответ отправлен: 06.11.2002, 03:08
Отправитель: Jadd


 Вопрос № 263

Подскажите пожалуйста как определить печатает принтер или нет. Надо остановить прогу на время печати и когда принтер закончит лист продолжить.



Вопрос отправлен: 05.11.2002, 22:01
Отправитель: Andy BitOff

[Следующий вопрос >>] [Список вопросов]

Отвечает Рыжик

Приветствую Вас, Andy BitOff!
uses Printers;
begin
if Printer.Printing then
...........


Ответ отправлен: 06.11.2002, 12:06
Отправитель: Рыжик


 Вопрос № 264

Доброе время суток, эксперты.
Вопрос: Как самому сделать процедуру,
т.е. как в Паскале, процедура сначала
описывается, а потом где-то в проге вызывается?



Вопрос отправлен: 06.11.2002, 00:07
Отправитель: Iv

[Следующий вопрос >>] [Список вопросов]

Отвечает baldr

Доброе время суток, Iv!
Ага... Сразу видно где ты запутался! ;)
Понимаешь, дело все в том, что в Delphi предполагается написание кода не в самой программе,
а в модуле!. То есть, сначала надо объявить процедуру в части interface, а потом описать
в разделе implementation. Причем надо учитывать принадлежность процедуры какому-либо классу, в
основном, классу текущей формы. В общем, попробуй создать простейшую программу на Delphi и
посмотреть - как все функции описываются, а потом по аналогии сделать самостоятельно.


Ответ отправлен: 06.11.2002, 23:39
Отправитель: baldr


Отвечает Jadd

Здравствуйте, Iv!
Блин, ну что за вопросы пошли. Тебе самому-то не лень такое спрашивать? А мне лень на это отвечать. Читай книги по Паскалю.

Ответ отправлен: 06.11.2002, 03:05
Отправитель: Jadd


Отвечает Idle Sign

Приветствую Вас, Iv!
===== Pro bono publico, no bloody panico! =====
Именно как в Паскале :)
Сначала процедура объявляется, также как и переменная (см. Рассылку - Вопрос №191 Выпуск №077 от 25.09.2002, 07:10)
Далее описываем ее примерно так как это сделано в Приложении (еще посмотри Вопрос №208 Выпуск №083
от 07.10.2002, 19:30).
Потом вызываем ее (опять гляди в Приложение).


Приложение:

Ответ отправлен: 09.11.2002, 11:19
Отправитель: Idle Sign


 Вопрос № 265

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



Вопрос отправлен: 06.11.2002, 15:58
Отправитель: Elvis

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Здравствуйте, Elvis!
===== Pro bono publico, no bloody panico! =====
Проще так: перед копированием проверяем fileexists(filename:string), тогда делаем что нужно.


Ответ отправлен: 09.11.2002, 11:19
Отправитель: Idle Sign


Отвечает Jadd

Здравствуйте, Elvis!
Очень просто. CopyFile(SourceFileName, NewFileName, TRUE);
В этом случае, если файл существует, копирования не произойдет и функция вернет FALSE, следовательно, следующее, что надо сделать - вызвать GetLastError(), если надо удостовериться, почему копирования не произошло.
Удачи

Ответ отправлен: 07.11.2002, 02:51
Отправитель: Jadd


 Вопрос № 266

как сделать прогу невидимой в task bar?
и засунуть в systray?
Electronic



Вопрос отправлен: 06.11.2002, 18:12
Отправитель: Electronic

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Здравствуйте, Electronic!
===== Pro bono publico, no bloody panico! =====
Делаем невидимой так - Вопрос №235 Выпуск №092
от 27.10.2002, 10:10.
Суем в СисТрей так - Вопрос №201 Выпуск №081
от 03.10.2002, 19:10.

Ответ отправлен: 09.11.2002, 11:19
Отправитель: Idle Sign


Отвечает Jadd

Доброе время суток, Electronic!
Поищи в рассылке. Тут уже задавался подобный вопрос.

Ответ отправлен: 07.11.2002, 02:53
Отправитель: Jadd



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (36)
C / C++ (25)
Perl (6)
Delphi (14)
Pascal (19)
Basic / VBA (8)
Java / JavaScript (10)
PHP (7)
MySQL / MSSQL (8)
Пользователю
Windows 95/98/Me (27)
Windows NT/2000/XP (17)
"Железо" (26)
Поиск информации (10)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (14)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (5)
КоАП (6)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное