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

Вниз

В Win98 проекты ведут себя весьма странно   Найти похожие ветки 

 
norwikh   (2005-10-06 14:50) [0]

Упростил задачу до минимума: динамически создаются ~10 TImage. В них загружаются изображения из файлов. Под XP все нормально, под 98-ой все глохнет - единственно активным элементом является курсор мыши. Система никак не реагирует. Писал одно и тоже как Делфи (6), так и на Билдере (6).

Если невнятно, извините - не сплю давно :)

Я в растеряности.


 
Германн ©   (2005-10-06 14:53) [1]

В 9х очень мало ресурсов GDI. Уменьшай количество картинок.


 
umbra ©   (2005-10-06 14:53) [2]

Запускается откомпилированная прога или проект из делфи?


 
umbra ©   (2005-10-06 14:55) [3]

2 Германн ©

ну уж 10 картинок то можно одновременно открыть


 
norwikh   (2005-10-06 14:57) [4]

Так и знал (но не хотел верить), что проблема в кол-ве объектов...

Совсем не решается?


 
Del_programmer ©   (2005-10-06 14:57) [5]

если проект, то под 98 динамика будет глохнуть...


 
Anatoly Podgoretsky ©   (2005-10-06 14:58) [6]

Упрости до миниму - создай только один объект, гадом буду повиснет.


 
Del_programmer ©   (2005-10-06 14:59) [7]

Удалено модератором


 
Игорь Шевченко ©   (2005-10-06 14:59) [8]

В Win98 есть такой системный монитор, показывающий количество свободных ресурсов. Попробуй уменьшить количество TImage и посмотри, что этот монитор покажет.


 
norwikh   (2005-10-06 15:05) [9]

> Запускается откомпилированная прога или проект из делфи?
Первое. Собирается под Искпёй, запускается под 98-ой (изврат, конечно).

Запускается откомпилированная прога или проект из делфи?

> В Win98 есть такой системный монитор, показывающий количество свободных
> ресурсов. Попробуй уменьшить количество TImage и посмотри, что этот
> монитор покажет.

Система глухая ко всему, кроме мыши. Думаешь, создается больше чем надо копий TImage?


 
norwikh   (2005-10-06 15:10) [10]

Хоть на асме все пиши...

Спасибо, други.


 
umbra ©   (2005-10-06 15:18) [11]


> Первое. Собирается под Искпёй, запускается под 98-ой (изврат,
>  конечно).
>


Скорее всего, в этом все и дело. Все таки множество функций имеют разные варианты для 98 и ХР. Если собрано на 98, то на ХР скорее всего будет работать также, а наоборот вовсе не обязательно. В общем надо собирать на 98


 
Anatoly Podgoretsky ©   (2005-10-06 15:20) [12]

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


 
umbra ©   (2005-10-06 15:23) [13]


> что программу надо компилировать под каждой версией ОС и
> поставлять все варианты


не для каждой, а для минимальной. разве Вам не случалось видеть программы, не работающие на 98, но прекрасно работающие на ХР?


 
Amoeba ©   (2005-10-06 15:29) [14]


> umbra ©   (06.10.05 15:23) [13]
>
> > что программу надо компилировать под каждой версией ОС
> и
> > поставлять все варианты
>
>
> не для каждой, а для минимальной. разве Вам не случалось
> видеть программы, не работающие на 98, но прекрасно работающие
> на ХР?

Компилятору по барабану, под какой WIN от компилирует. Просто все дело в исходном коде.


 
Anatoly Podgoretsky ©   (2005-10-06 15:47) [15]

umbra ©   (06.10.05 15:23) [13]
Мне приходилось видеть откомпилированые на ХР, запускаемые на ХР и в тоже время нерабочии. Достаточно почитать форум в любой день. Но мне встречались и люди верящие в чудо, что стоит только откомпилировать на 98, как все заработает.


 
Sapersky   (2005-10-06 17:34) [16]

динамически создаются ~10 TImage. В них загружаются изображения из файлов

Как именно создаются (код)? Какого размера и типа (bmp, jpg) картинки?


 
norwikh   (2005-10-07 12:58) [17]


> Как именно создаются (код)? Какого размера и типа (bmp,
> jpg) картинки?


В файле flist.txt нах. список файлов (*.bmp), которые надо отобразить на форме в новосозданных TImage.

Delphi:

procedure TForm1.FormCreate(Sender: TObject);
var
files: TStringList;
imgs: array [0..69] of TImage;
i: integer;
begin
files := TStringList.Create;
files.LoadFromFile(".\flist.txt");

for i := 0 to 9 do
begin
 imgs[i] := TImage.Create(Form1);
 imgs[i].Top := i * 3;
 imgs[i].Left := i * 3;
 imgs[i].Picture.LoadFromFile(".\1\"+files.Strings[i]);
end;
end;


Builder:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TStringList *files;
files = new TStringList;
files->LoadFromFile(".\\flist.txt");

TImage *imgs[70];

for(int i = 0; i < 9; i++)
{
 imgs[i] = new TImage(Form1);
 imgs[i]->Parent = Form1;
 imgs[i]->Top = i * 3;
 imgs[i]->Left = i * 3;
 imgs[i]->Picture->LoadFromFile(".\\1\\"+files->Strings[i]);
}
}


Элементарщина ведь!

Общий размер файлов - почти два метра полноцветного битмапа.


 
umbra ©   (2005-10-07 13:32) [18]

Anatoly Podgoretsky ©   (06.10.05 15:47) [15]

насколько я понял автора, на ХР программа как раз работает нормально. и хотя компилятору все равно, где компилировать, но выполняет программу не компилятор, а операционная система


 
kot andrei ©   (2005-10-07 13:33) [19]

files.LoadFromFile(".\flist.txt");

особо не вчитывался , но что там за точка перед косой?
да и надежней было бы по моему extractfiledir(paramstr(0))+"\flist.txt")


 
norwikh   (2005-10-07 13:52) [20]


> но что там за точка перед косой?

Текущая директория. На самом деле без разницы, какой путь использовать - относительный или полный.

Но проблема, kot andrei, не в этом.

Хотелось бы узнать, есть ли более "экономный" способ загрузить много изображений на форму? Ведь это делается и довольно успешно. Неужто мне экзешник расковыривать (есть пример) и выяснять, как там картинки загружаются?


 
Sapersky   (2005-10-07 14:03) [21]

Более экономный способ - выкинуть нафиг TImage и использовать TBitmap. Неужели так трудно нарисовать их в OnPaint?
Что касается TImage - видимо, при создании какие-то свойства не назначены (Parent в дельфийской версии?) или назначены не так. А может, от наложения 10 штук друг на друга (imgs[i].Top := i * 3; imgs[i].Left := i * 3) им худо становится.


 
umbra ©   (2005-10-07 14:10) [22]


> imgs: array [0..69] of TImage;


А после выхода из FormCreate где оказываются твои картинки? где-то в неопределенном месте, массив то у тебя локальный для процедуры


 
norwikh   (2005-10-07 14:23) [23]


> Более экономный способ - выкинуть нафиг TImage и использовать
> TBitmap. Неужели так трудно нарисовать их в OnPaint?


Вот это уже похоже на дельный совет, попробую.


> Что касается TImage - видимо, при создании какие-то свойства
> не назначены (Parent в дельфийской версии?) или назначены
> не так. А может, от наложения 10 штук друг на друга (imgs[i].
> Top := i * 3; imgs[i].Left := i * 3) им худо становится.


В делфях не получалось родителя указать, вот я забил на это. Впрочем, и без этого все прекрасно показывалось (под XP), а под 98-ой - зависа-а-аем. :)
Даже если TImage будет создан не динамически, все равно винда виснет. Люди говорили, слишком много GDI объектов для 98-ой...


 
Sapersky   (2005-10-07 18:44) [24]

А после выхода из FormCreate где оказываются твои картинки? где-то в неопределенном месте, массив то у тебя локальный для процедуры

Они добавляются к списку "детей" формы. Вот StringList - тот и правда теряется.
И TBitmap"ы потеряются, т.к. они не являются компонентами, и уничтожать их нужно вручную.


 
SMATMP ©   (2005-10-11 19:10) [25]

Ув. norwikh! Не считаю себя профессионалом, но всё-таки помогу, поскольку об этом просто в хелпе сказано. Сходи по F1 на метод Create и ты сам всё поймешь. А ни количество TImage, ни требование (вполне обоснованное) по их уничтожению тут ни при чём. У меня была возможность ради интереса проверить то что ты хочешь сделать даже на 100-м пне. Ну занято это не долю секунда, а может быть полторы (картинки правда небольшие были, по 50 кБ). Но вот ни количество TImage, ни система (на 100-м пне была W98) тут точно не при чем. А вот

imgs[i]->Top = i * 3;
imgs[i]->Left = i * 3;


надо будет скорее всего поправить. Что-то здесь не так.
Всех благ.



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

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

Наверх




Память: 0.53 MB
Время: 0.054 c
1-1129103674
Mishenka
2005-10-12 11:54
2005.11.06
Как в ListView сделать, чтобы CheckBox был не у всех Item ов?


3-1127454524
Aliv
2005-09-23 09:48
2005.11.06
invalid filename при попытке создать таблицу


9-1112703539
qwe
2005-04-05 16:18
2005.11.06
Glscene скорость работы приложения


9-1118496600
Cerberus
2005-06-11 17:30
2005.11.06
Cоздание RPG


5-1108489947
Anatoly
2005-02-15 20:52
2005.11.06
Поле элемента коллекции - элемент другой коллекции