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

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


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


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 208
от 30.08.2003, 19:40

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


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

Marouder
Статус: Опытный
Общий рейтинг: 115.58
URL: Первый Хабаровский Форум
Телефон: (4212) 21-93-65
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.08
URL: Программирование
[Подробней >>]
Delphist
Статус: Начальный
Общий рейтинг: 102.66
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.74
URL: Пристанище неодинокого программиста
[Подробней >>]


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

Вопрос № 868. Здравствуйте уважаемые эксперты !!! 1) Вот до недавнего времени у меня работал следующий код. Это ви... (ответов: 1)
Вопрос № 869. Здравствуйте, уважаемые эксперты! Большое спосибо всем, кто ответил на мой вопрос 867! :-) ... к сож... (ответов: 1)
Вопрос № 870. Как спроектировать тень (спрайт) на какой-то карявый ланшафт ... (ответов: 1)
Вопрос № 871. Эксперты добрый день. У меня возникла такая проблема, мне задали такую задачу, к которой я не могу п... (ответов: 1)
Вопрос № 872. Здравствуйте, ув. эксперты. Как заставить форму (Delphi6) перерисоваться, но не вызвать при этом соб... (ответов: 2)

Вопросов: 5, ответов: 6


 Вопрос № 868

Здравствуйте уважаемые эксперты !!!
1) Вот до недавнего времени у меня работал следующий код.
Это виртуальное нажатие комбинации Ctrl-Z (нашел в Инете).
То есть при нажатии на пункт меню отменяется последнее
действие, но оно почему-то перестало работать, то есть
вообще никакой реакции. Для справки: у формы свойство
KeyPreview установлено в True, Windows 98, Delphi 6.
Помогите советом как быть.
procedure TForm2.mnuCancelClick(Sender: TObject);
begin
Keybd_Event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0),0,0);
Keybd_Event(Ord('Z'), MapVirtualKey(Ord('Z'), 0),0,0);
Keybd_Event(Ord('Z'), MapVirtualKey(Ord('Z'), 0),
KEYEVENTF_KEYUP,0);
Keybd_Event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0),
KEYEVENTF_KEYUP, 0);
end;
2) Теперь еше справка начала парить мозги. Выделяю
какой-нить оператор и нажимаю F1, справка запускается,
но минимизируется и ее никак не удается восстановить.
Такое же наблюдается если я вызываю (у меня Делфа
руссифицированная): "Помощь" -> "Содержание" -> "Указатель"
и набираю слово для поиска.
Заранее большое спасибо !!!



Вопрос отправлен: 26.08.2003, 15:48
Отправитель: SATAN aka NAPALM

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

Отвечает Marouder

Здравствуйте, SATAN aka NAPALM!
2. Скажу одно - руссифицированые пиратами Delphi - отстой. Delphi не так сложен для понимания, чтобы пользоваться руссификаторами.

Ответ отправлен: 27.08.2003, 10:05
Отправитель: Marouder


 Вопрос № 869

Здравствуйте, уважаемые эксперты!
Большое спосибо всем, кто ответил на мой вопрос 867! :-)
... к сожалению, вы мне не помогли ...:-(
Попробуем еще раз!
Вопрос 867:
>Какой функцией или процедурой можно получить размер файла,
>не открывая его? Не получается, когда к файлу блокирован >доступ.
Я считаю, что определить размер заблокированного файла можно. Ниже пример.
-------------------------------
Допустим есть у меня файл hiberfil.sys в корне с установленной WinXP. Этот файл заблокирован.
Я не могу получить его размер с помощью функций типа FileSize, FileSeek, GetFileSize, потому
как им нужен Handle или файловая переменная открытого файла. А файл я открыть не могу!
Но есть выход! Процедуры FindFirst и FindNext!
Если я выполню процедуру FindFirst(Path, faAnyFile, SearchRec) ,
где Path - полный путь к этому файлу, то я получу его размер в
SearchRec.Size !
------------------------------
Внимание вопрос! Как получить размер заблокированного файла больше 2Gb?
Ведь TSearchRec.Size - имеет ти Integer, а мне нужен Int64!



Вопрос отправлен: 26.08.2003, 19:57
Отправитель: Byter

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

Отвечает Bob Johnson

Доброе время суток, Byter!
> Я считаю, что определить размер заблокированного файла можно. Ниже пример.
Ну-ну... Я же тебе так и писал!
(Попробуй осуществлять его поиск по его полному имени, тогда будет найдет только он (ну и еще, возможно, такой же каталог, если он есть))
> Ведь TSearchRec.Size - имеет ти Integer, а мне нужен Int64!
Используй функции самого win32 -
FindFirstFile, FindNextFile и WIN32_FIND_DATA - в ней размер файла определяется 64-мя битами.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 27.08.2003, 02:16
Отправитель: Bob Johnson


 Вопрос № 870

Как спроектировать тень (спрайт) на какой-то карявый ланшафт



Вопрос отправлен: 27.08.2003, 00:27
Отправитель: DJ B (dj_b@km.ru)

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

Отвечает Bob Johnson

Доброе время суток, DJ B!
Берешь каждую вершину, образующую "корявый ландшафт", проводишь из нее линию в источник света, попутно определяя точку пересечения этой линии с текстурой тени. После чего соспоставляешь данной точке полученную текстурную координату. Интерполяцию текстуры осуществляет уже 3д ускоритель, поэтому тень будет растянута или сжата, если это нужно (в зависимости от направления нормали полигона ландшафта и вектора на источник света).
Получить текстуру тени от реального объекта возможно с помощью stencil буфера, путем отрисовки объекта в текстуру с помощью ортогонального проецирования. Это означает, что источник света будет бесконечно далеким от объекта.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 27.08.2003, 16:31
Отправитель: Bob Johnson


 Вопрос № 871

Эксперты добрый день. У меня возникла такая проблема, мне задали такую задачу, к которой я не могу подобраться, даже не знаю с чего начать, не поможете ли вы мне (новичку по Delphi)? Задача вот такая:
Методом статических испытаний вычислить площадь фигуры между двумя кривыми.При заданной гарантийной вероятности Pr=0,9 получить зависимость доверительного интервала ошибки
вычисления площади от числа опытов.
Уравнение первой кривой f1(x)=2+sin(2Пx);
Уравнение второй кривой f2(x)=exp(x^2);
Область в которой находится фигура :
Xmin=-1,Xmax=1,Ymin=-1,Ymax=3;
Число опытов начальное 1000,конечное 9000,шаг изменения 1000.
Тут нужно решать её методом Монте-Карло(метод статических испытаний).Помогите пожайлуста её сделать, очень срочно нужно, заранее благодарен.




Вопрос отправлен: 27.08.2003, 12:46
Отправитель: николай (chuprin_kolya@rambler.ru)

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

Отвечает Delphist

Приветствую Вас, Николай!
Делаешь это так.
1) Сначала простой для себя примерно график эих функций на заданном отрезке.
2) Тысячу раз генерируешь два случайных числа X и Y Xmin<=X<=Xmax и Ymin<=Y<=Ymax. Если точка (X,Y) попадает в фигуру то есть находится между этими кривыми, то добаляешь к числу попавших 1.
3) Делишь число попавших на число испытаний и умножаешь на площадь прямоугольника, ограниченого Xmin,Xmax.Ymin,Ymax. Получаешь примерную площадь фигуры площадь фигуры.
Повторяешь с другим числом опытов. Зависимость доверительного интервала выведешь как-нибудь, сам толком не въезжаю что это такое.
Если нифига не понял пиши мне на мыло, попытаюсь объяснить подробнее. Если лень не одолеет может даже кусок кода напишу.


Ответ отправлен: 27.08.2003, 13:42
Отправитель: Delphist


 Вопрос № 872

Здравствуйте, ув. эксперты.
Как заставить форму (Delphi6) перерисоваться, но не вызвать при этом событие OnShow ?
Проблема в том, что на OnShow посажено заполнение комбобоксов, на OnCreate их сажать не хочу, потому что при заполнении нескольких форм вновь введенные данные при последующих заполнениях в комбобоксах не видны. А затем возникла задача сделать изменение данных - вывожу в эдиты и комбо данные, подлежащие изменению, с эдитами все в порядке, а комбо после ShowModal благополучно наполняются значениями, естественно, уничтожая введенные мной. Делать отдельную идентичную форму для изменений - расточительно (там 10 комбо и 5 эдитов).
И еще один вопрос, из первого вытекающий: я бы сделал заполнение комбо в OnCreate, если бы мог сделать форму avaiable. Но почему-то у меня работают только автокрит формы. Никто с таким не сталкивался? Раньше Delphi позволял создать 4 avaiable формы, и лишь затем начинал выдавать access violation, а теперь не позволяет создать ни одной.
Спасибо за ответы (если они будут).



Вопрос отправлен: 27.08.2003, 19:33
Отправитель: Loko

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

Отвечает Bob Johnson

Приветствую Вас, Loko!
1. Заполняй на OnCreate, а форму убери из списка Auto Create и создавай сам динамически (тем более, что для Modal форм - это самый лучший вариант). Это выглядит так:

var
f : TMyForm;
begin
f := TMyForm.Create (self);
f.ShowModal ();
...
f.Free ();
end;

Или что-то подобное, сейчас не уверен, т.к. последнее время пишу на билдере.
2. При этом, после Create и перед ShowModal ты можешь установить в контролы на форме все нужные значения. Я обычно так и делаю - в OnCreate устанавливаются значения по умолчанию, а если форма открывается для редактирования, то перед ShowModal в контролы заносятся редактируемые значения.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 28.08.2003, 13:19
Отправитель: Bob Johnson


Отвечает Артём Шегеда

Доброе время суток, Loko!

Access voilation возникает из-за того, что при создании какой-либо формы нет никакой гарантии, что другая форма уже создана (это в особенности справедиво для случая MainForm: в обработчике MainForm.OnCreate ни одна из других статических форм не существует). Поэтому заполнение полей формы следует переложить на саму форму.
Кроме того, в своих программах я использую такой приём:

procedure TForm1.OnApplicationIdle(Sender: TObject; var Done: Boolean);
begin
Done := true;
Application.OnIdle := nil;
// Все мои действия
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnIdle := OnApplicationIdle;
end;
Это гарантирует, что на момент выполнения обработчика OnApplicationIdle все статические формы существуют.

Ответ отправлен: 28.08.2003, 17:44
Отправитель: Артём Шегеда



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

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (38)
C / C++ (31)
Perl (5)
Builder / Delphi (19)
Pascal (26)
Basic / VBA (8)
Java / JavaScript (8)
PHP (10)
Криптография (9)
WinAPI (16)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (64)
"Железо" (43)
Поиск информации (24)
Администратору
Windows NT/2000/XP (32)
Linux / Unix (12)
Юристу
Гражданское право (11)
Семейное право (7)
Трудовое право (7)
КоАП (6)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

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

В избранное