Главная страница
    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.04 c
8-1118390454
NikNet
2005-06-10 12:00
2005.11.06
Как мне получить Буфер звука из TMediaPlayer1 компонента?


6-1122025060
KirGus
2005-07-22 13:37
2005.11.06
У меня такая проблема с клиент-сокетом:


1-1129371372
DelphiLexx
2005-10-15 14:16
2005.11.06
Как в TRadioGroup разместить символ &amp;#948; - дельта?


2-1129014464
MasterVovan
2005-10-11 11:07
2005.11.06
Page control


11-1110474132
Ans
2005-03-10 20:02
2005.11.06
DB, индексы





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