Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];

Вниз

Нехватка ресурсов под 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
9-25678
Unknown user
2003-08-21 15:42
2004.03.09
Определение попадающих в область видимости объектов в OpenGL.


1-25734
Islander
2004-02-26 00:59
2004.03.09
Как отловить отмену редактирования ноды?


11-25724
puky
2003-05-23 19:16
2004.03.09
Kol и Shareware


1-25756
OlimPer
2004-02-24 16:13
2004.03.09
Юникод? Или как?


1-25803
iluxa
2004-02-25 13:53
2004.03.09
Помогите разобраться в DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский