Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

Нехватка ресурсов под win98   Найти похожие ветки 

 
Сергей Петров   (2004-02-27 01:26) [0]

Прилагаемый код под Windows98 либо вешает машину, либо приводит ее в состояние, когда все свободные ресурсы съедены. В чем дело и как избавиться? Это код form1.create. Вешается где-то на третьем-четвертом loadfromfile. Под XP все ок.


clientwidth := 818;
clientheight := 600;

application.OnActivate := Form1.FormActivate;
application.OnDeActivate := Form1.FormDeActivate;

thumb := tbitmap.create;
formbg := tbitmap.create;
formbg.LoadFromFile(extractfilepath(application.exename)+"\res\bg.bmp");
formbg.Dormant;
formbg.Freeimage;
mouseoff := tbitmap.create;
mouseoff2 := tbitmap.create;
mouseon := tbitmap.create;
mouseon2 := tbitmap.create;
mousesel := tbitmap.create;
mousesel2 := tbitmap.create;

fp := extractfilepath(application.exename);

mouseoff.loadfromfile(fp+"res\mouseoff.bmp");
mouseoff.TransparentMode := tmFixed;
mouseoff.TransparentColor := clWhite;
mouseoff.Transparent := true;

mouseon.loadfromfile(fp+"res\mouseon.bmp");
mouseon.TransparentMode := tmFixed;
mouseon.TransparentColor := clWhite;
mouseon.Transparent := true;

mousesel.loadfromfile(fp+"res\mousesel.bmp");
mousesel.TransparentMode := tmFixed;
mousesel.TransparentColor := clWhite;
mousesel.Transparent := true;

mouseon2.loadfromfile(fp+"res\mouseon2.bmp");
mouseon2.TransparentColor := clWhite;
mouseon2.TransparentMode := tmFixed;
mouseon2.Transparent := true;

mouseoff2.loadfromfile(fp+"res\mouseoff2.bmp");
mouseoff2.TransparentColor := clWhite;
mouseoff2.TransparentMode := tmFixed;
mouseoff2.Transparent := true;

mousesel2.loadfromfile(fp+"res\mousesel2.bmp");
mousesel2.TransparentColor := clWhite;
mousesel2.TransparentMode := tmFixed;
mousesel2.Transparent := true;


 
Defunct ©   (2004-02-27 01:51) [1]

Я Вам вчера, кажется, уже говорил, что в этой ситуации прийдется смириться. Глюк ОС. Ищите другие способы посторения прозрачности. Напишите собственную реализацию Transparent.

например:
MyTransparentColor := clRed;

if Bmp.canvas.pixels[x,y] = MyTransparentColor Then Bmp.canvas.pixels[x,y] := _цвет_точки_с_формы_

У Вас ведь там только однократное использование свойства Transparent, при заливке.


 
Сергей Петров   (2004-02-27 02:01) [2]

Да хрен с ним, с transparent. Ничего не работает и без него. Даже если оставить только loadfromfile. Съедает все ресурсы.


 
Defunct ©   (2004-02-27 02:14) [3]

А если поставить на форму несколько image и загрузить в них заранее все картинки?

Кстати, а без отладчика программа работает? Отладчик Delphi жрет около 50% сист. ресурсов под W95/98


 
Сергей Петров   (2004-02-27 02:19) [4]

А я теперь уже ничего не понимаю. Вроде заработало. С прозрачностью проблемы, конечно, остались, но это другой вопрос.

Фишка только в том, что ровно десять минут назад тот же самый код вешал систему. А теперь вроде ничего...

Запускал утилиту, которая показывает, сколько ресурсов свободно, так на указанном коде даже не шелохнется! А десять минут назад количество свободных ресурсов сбрасывал до 0.

В общем, не понятно совершенно ничего.


 
Сергей Петров   (2004-02-27 02:21) [5]

Да уж и сразу насчет прозрачности...

Есть у меня TPanel. Надо, чтобы под ней была видна форма. Как это сделать? От TPanel отказаться вряд ли получится. Разве что заменить на что-то аналогичное...


 
Defunct ©   (2004-02-27 02:40) [6]

>А я теперь уже ничего не понимаю. Вроде заработало. С прозрачностью проблемы, конечно, остались, но это другой вопрос.

> Фишка только в том, что ровно десять минут назад тот же самый код вешал систему. А теперь вроде ничего...


Так ясное дело 10 минут назад у Вас была запущена программа "А" которая жрала X% сист ресурсов, и на вашу программу ресурсов не оставалось, а сейчас Вы закрыли программу "A" освободили X% сист. ресурсов и на вашу программу уже ресурсов хватает.

Еще раз повторюсь: ПРОБЛЕМА НЕ В ВАШЕЙ ПРОГРАММЕ, ПРОБЛЕМА В КРИВОЙ W95/98.

Как вы думаете зачем некоторые программы под Win95 перед запуском просят закрыть все приложения? Ибо знают, что иначе им не хватит ресурсов.

> Да уж и сразу насчет прозрачности...

Есть у меня TPanel. Надо, чтобы под ней была видна форма. Как это сделать? От TPanel отказаться вряд ли получится. Разве что заменить на что-то аналогичное...


Я для такой цели создал себе наследника от TPanel -> TSkinnedPanel с TPicture внутри и перекрытым методом перерисовки Paint, который просто скопировал из компонента TImage.

Ну а если свой компонент писать не хочется, можно TPanel заменить на TImage.


 
Сергей Петров   (2004-02-27 02:43) [7]

Так не было никаких программ! Я тестирую на Win98, установленном под Virtual PC.

Ха! Вот только что перезагрузил ее, и на абсолютно чистой запустил .exe. Зависло намертво.

С ума сойти...

Я не спорю, что Win9x кривые. Но я уверен, что возможно написать так, что будет и у формы бекграунд и еще пару битмапов загружено. Только не понимаю как..


 
Defunct ©   (2004-02-27 02:56) [8]

> Так не было никаких программ! Я тестирую на Win98, установленном под Virtual PC.

может в этом и ответ? хотя VMWare вроде нормально эмулирует.

> Я не спорю, что Win9x кривые. Но я уверен, что возможно написать так, что будет и у формы бекграунд и еще пару битмапов загружено. Только не понимаю как..

А что там получилось если просто несколько Image создать и загнать в них все картинки?

Попробуйте в цикле создавать множество Bitmap (каждая по 1Mb), посмотрите когда программа вылетит:

While True Do With TBitmap.Create Do
Begin
Width := 1000;
Height := 1000;
End;


Может что-то с файлами не так, добавьте в config.sys строку
FILES = 200



Страницы: 1 вся ветка

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-25728
joper
2004-02-27 10:19
2004.03.09
проверить ЭЦП


14-25895
Феликс
2004-02-15 14:02
2004.03.09
Добрая жена, густые щи, другого не ищи. Согласны?


1-25782
Demon_mhm
2004-02-26 11:55
2004.03.09
Как изменить цвет фонта на кнопке


14-25881
Vitally
2004-02-16 03:48
2004.03.09
try...except и if then использовать надо


14-25912
blackweber
2004-02-16 00:25
2004.03.09
Размер файла с++