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

Вниз

В 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.044 c
4-1125777895
SamProf
2005-09-04 00:04
2005.11.06
Управлять активным Editom не на своей форме!


14-1129719369
Иг_Иг
2005-10-19 14:56
2005.11.06
Свернуть все окна !


1-1129190192
MixAnOL
2005-10-13 11:56
2005.11.06
Автоматическое фокусирование окна


2-1129103955
Zhekson
2005-10-12 11:59
2005.11.06
Контурная карта


2-1129042250
Dofin
2005-10-11 18:50
2005.11.06
Как в SQL запрос подставить значение Edit1.Text?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский