Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 3

Автор: Arvur
Дата сообщения: 22.08.2007 00:58
Glukodel

Цитата:
предлогаю завязать с флеймом...

Согласен, разбуянились чегой-то

Добавлю только маленькое имхо для читающих топик

Цитата:
в жизни не видел более корректного описания происходящего...

Я бы скорее сказал "наглядного". Обычно статьи на эту тему читаются с бОльшим трудом
Так что, для первого чтения по механизмам потоков в windows и системам реального времени она крайне хороша.

А тем, кого больше интересует именно практическое применение потоков в Delphi, лучше все-таки начать с легких "сказочек" товарища Гурина.
Все максимально доходчиво и библиотеки отличные
_http://gurin.tomsknet.ru/sourcesdelphi.html
Автор: SERGE_BLIZNUK
Дата сообщения: 22.08.2007 01:17
Arvur
Glukodel
Господа, большое спасибо за науку! (хоть ещё не читал, но в to-do записал)
и я считаю, что флеймом назвать то, что приносит реальную пользу (в виде новых знаний и умений), нельзя.
впрочем... умолкаю. sapienti sat.
Автор: RostY
Дата сообщения: 22.08.2007 08:15
GreatOne

For i:=1 to 2000 do
begin
Application.ProcessMessages;
Sleep(1);
end;

во так получиш 2 сек.
Автор: Dennica
Дата сообщения: 22.08.2007 08:25
RostY

Цитата:
во так получиш 2 сек.

Если прочитать статейку, ссылку на которую давал Glukodel чуть ранее, то станет понятно что таким образом не получиш 2 секунды простоя. Каждый слип займет 1-10 милисек.
Автор: Glukodel
Дата сообщения: 22.08.2007 10:41
Dennica

Цитата:
Если прочитать статейку



если код RostY дописать так:
var
I: Integer;
speed: longword;
begin
speed := GetTickCount;
for I := 1 to 2000 do
begin
Application.ProcessMessages;
Sleep(1);
end;
Caption := Format('Затраченное время: %d', [(GetTickCount - speed)])
end;
то будет видно, сколько именно...
RostY
у меня на незагруженной машине около 3900 мс,
т.е. почти 4с... а у тебя?
Автор: Chuvakstepan
Дата сообщения: 22.08.2007 11:06
Народ, подскажите, как средствами Delphi узнать есть ли Directx 10 ?
Автор: RostY
Дата сообщения: 22.08.2007 13:19
Glukodel
у мну 3907

но если сделать цикл to 20 и sleep(100) тогда около 2000
Автор: delover
Дата сообщения: 22.08.2007 14:08
Chuvakstepan
Если версия системы XP, то в ней автоматически установлен Dirext 10-ый.

Добавлено:
Glukodel

Цитата:
Application.ProcessMessages;

Эта процедура дофига сообщений обрабатывает и работает всегда гораздо дольше чем sleep(2).
Автор: Arvur
Дата сообщения: 22.08.2007 14:27

Цитата:
Если версия системы XP, то в ней автоматически установлен Dirext 10-ый.

Это в висте десятка
Возможно, есть смысл заглянуть сюда
_http://clootie.ru/delphi/index.html
.. сам не пользовался

Добавлено:

Цитата:
Эта процедура дофига сообщений обрабатывает

А если сообщения не обрабатывать - приложение "подвисает"
Автор: yuish
Дата сообщения: 22.08.2007 14:29
delover

Цитата:
Если версия системы XP, то в ней автоматически установлен Dirext 10-ый.


Вообще то там директ 9. 10-й автоматически в Висте.
Автор: Chuvakstepan
Дата сообщения: 22.08.2007 14:39
yuish
Вообще-то ты прав

Тогда другой вопрос, как сделать следующее:
if windows_label.caption содержит слово "Vista" then Directx_label.Caption:='DirectX 10'
Автор: RostY
Дата сообщения: 22.08.2007 14:41
if pos('Vista',windows_label.caption) <> 0 then Directx_label.Caption:='DirectX 10'
Автор: Chuvakstepan
Дата сообщения: 22.08.2007 14:49
RostY
Большое спасибо! Учусь

Добавлено:
есть такая функция GradientRect, которая может залить форму
Я ей воспользовался, но при перетаскивании формы за пределы экрана, градиент стирается. Может, кто-нибудь сталкивался?
Автор: antonn2
Дата сообщения: 22.08.2007 23:13
Chuvakstepan
создать буферный битмап по размерам клиентской части формы, заливать его градиентом, в onpaint копировать нужную часть битмапа на форму через bltbtn(). При этом все должно рисоваться еще быстрее, т.к. градиент строится только один раз.
Автор: Dennica
Дата сообщения: 23.08.2007 07:23
Возникла следующая проблемка. Еврика сообщает об утечке памяти в одной из формочек, но не показывает где именно. Вроде все уже на два раза перепроверил, никак не могу отыскать. Посоветуйте пожалуйста как/чем еще можно воспользоваться для решения проблеммы.
Автор: RomanTim
Дата сообщения: 23.08.2007 10:34
Dennica
Я для отлова утечек пользовался AQTime
Автор: OdesitVadim
Дата сообщения: 23.08.2007 11:32
Dennica
Используй fastmm
Автор: Chuvakstepan
Дата сообщения: 24.08.2007 11:10
Подскажите, как после закрытия моего приложения, активным становилось окно приложения, которое БЫЛО активным до запуска моего приложения
Автор: Grafus
Дата сообщения: 24.08.2007 11:53
Народ, помогите начинающему!
Нужно сделать маленькую Приблуду которая по кнопке будет удалять, заранее известную, папку, например c:\temp\test\, со всем её содержимым (файлами и подкаталогами).
Вопрос в том, что надо написать для нажатия кнопки?
Автор: skinash
Дата сообщения: 24.08.2007 12:06
Grafus

Код: function DelDir(dir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_DELETE;
fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
pFrom := PChar(dir + #0);
end;
Result := (0 = ShFileOperation(fos));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
DelDir('C:\Windows');
end;
Автор: Chuvakstepan
Дата сообщения: 24.08.2007 12:40
skinash
Надо что-то прописать в TForm1.FormDestroy, но незнаю что именно
2ALL
ПОМОГИТЕ! Срочно надо!
Автор: Grafus
Дата сообщения: 24.08.2007 13:32
Ругается на TSHFileOpStruct.
Какой компонент нужно вставить в форму и где его скачать?
Автор: delover
Дата сообщения: 24.08.2007 14:06
yuish
Прошу пардону, у меня на работе видимо кто-то десятый установил, я точно не устанавливал, дистриба нет. Может быть это из-за апдейтов, у меня легальная копия?
Arvur

Цитата:
А если сообщения не обрабатывать - приложение "подвисает"

Я же написал ProcessMessages работает дольше чем Sleep(2). Проверять не надо - работаю в Автоматизированных Системах Коммерческого Учёта Электроэнергии. Может представляешь, что такое сервер опроса? А вот так будет полный нормал

Код:
for I := 1 to 200 do
begin
Application.ProcessMessages;
Sleep(10);
end;
Автор: skinash
Дата сообщения: 24.08.2007 14:28
Chuvakstepan
Тебе delover правильно говорит. Я ж говорю, поищи через google статью "Мечты вуайериста". В ней подробно разбирается проблема работы с чужими окнами.

Grafus
Сорри, не сказал:

Код: uses
ShellAPI;
Автор: Chuvakstepan
Дата сообщения: 24.08.2007 14:42
delover
Спасибо! Ларчик то просто открывался:

SetForegroundWindow(Application.Handle)

Добавлено:
А ещё почему-то делаю так:
SetForegroundWindow(WizardForm.Handle)

Он говорит Unknown Identifier
Автор: skinash
Дата сообщения: 24.08.2007 15:14
Chuvakstepan

Цитата:
SetForegroundWindow(Application.Handle)

Это ты со своим приложением работаешь.
А ведь тебе надо с чужим?
Сначала тебе надо запомнить хендл активного окна:

Код: var
H: HWND;

procedure TMainForm.FormCreate(Sender: TObject);
begin
H := GetForeGroundWindow;
end;
Автор: lavren
Дата сообщения: 24.08.2007 15:22
Народ, можно ли поставить Delphi 2007 с другим каким нибуть Delphi чтобы не было ошибки при создании нового проекта (Access violation at address 00000000. Read of address 00000000.)?
Какие версии Delphi могут стоять вместе с CodeGear™ Delphi® for Microsoft® Windows™(Version 11.0.2627.5503 или другие) и на каких ОС, притом нормально работали?
И что можна сделать штобы Delphi 5 и Delphi 2007 стояли на Windows 2003 Server SP2 и нормально работали?
Автор: skinash
Дата сообщения: 24.08.2007 15:29
lavren
Если уже стоит какая-нибудь Delphi, например 5, то когда устанавливаешь новую версию, надо внимательно ставить/снимать галочки в визарде, а конкретно, когда предлагает ассоциировать файлы с приложением (*.pas, например). Т.е. приложение по умолчанию для файлов *.pas должна оставаться Delphi5.
И если всё сделаешь правильно, то две а то и три версии Delphi могут "дружить" на одном компьютере.
Автор: Chuvakstepan
Дата сообщения: 24.08.2007 15:40
skinash
БОЛЬШОЕ огромное СПАСИБище! Вроде всё получилось
Автор: lavren
Дата сообщения: 24.08.2007 15:42
skinash
При установке Delphi 2007 снимаю галочки с .dfm, .dpk, .dpr, .pas
Delphi5 стоит в каталоге C:\Borland\Delphi5. Shared файлы к нему в C:\Borland\Shared.
Delphi 2007 ставлю в каталог по умолчанию.
Кажысь все аккуратно делаю, а оно не пашет!

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.