Загрузка рисунка в TImage
От: Аноним  
Дата: 23.01.03 02:45
Оценка:
Здравствуйте господп программеры!

Пытаюсь при работе программы загрузить в TImage рисунок из файла (BMP)

Image1.Picture.LoadFromFile('d:\img.bmp');

а уменя вываливается ошибка:

Access violation at addres ... in module 'GDI32.DLL'.

Чего это он! Я уже и потоками пробовал, но ...
Подскажите куды мне глядеть!

У меня W2k, D5(sp1+sp2).

Спасибою
Re: Загрузка рисунка в TImage
От: Sergey Ten http://www.fastalgo.com
Дата: 23.01.03 03:49
Оценка:
Неработающий фрагмент кода в студию вместе с ответами на вопросы:

— Не битый ли битмап? Открывается ли он нормально, скажем, в Paint-е?
— Если создать тривиальный проект, бросив на форму TImage и TButton, прописав на OnClick TButton-у тот самый LoadFromFile — тоже валится? Это позволит выявить, виновата ли Delphi или же это твой рабочий проект чудит.
— Трассировался ли исходный код TBitmap-а (включался ли "Use debug DCU" на закладке "Compiler" проекта)? Если да, на каком месте он валится?
— Что означает "Я уже и потоками пробовал"? Как это выглядело?
— Какие еще меры принимались по нахождению причины?

http://rsdn.ru/howtoask.htm
Re[2]: Загрузка рисунка в TImage
От: Callisto  
Дата: 23.01.03 05:54
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>Неработающий фрагмент кода в студию вместе с ответами на вопросы:


Да, собственно, весь код и состоит из одной строки.

Image.Picture.LoadFromFile('d:\img.bmp');

ST>- Не битый ли битмап? Открывается ли он нормально, скажем, в Paint-е?


Файл открывается любым граф.редактором.

ST>- Если создать тривиальный проект, бросив на форму TImage и TButton, прописав на OnClick TButton-у тот самый LoadFromFile — тоже валится? Это позволит выявить, виновата ли Delphi или же это твой рабочий проект чудит.


Как раз так и сделан проект (я пока только пробую).

ST>- Трассировался ли исходный код TBitmap-а (включался ли "Use debug DCU" на закладке "Compiler" проекта)? Если да, на каком месте он валится?


процедура из Graphics.pas (стр.5800)

procedure TBitmap.ReadDIB(Stream: TStream; ImageSize: LongWord);
const
...
var
...
begin
...
BMHandle := CreateDIBSection(DC, BitmapInfo^, DIB_RGB_COLORS, BitsMem, 0, 0);
...
end;

Дальше не смотрел — там ассемблерный код.

ST>- Что означает "Я уже и потоками пробовал"? Как это выглядело?


FileStream.Create(MyFileName);
Image.Picture.BitMap.LoadFromStream(FileStream);

ST>- Какие еще меры принимались по нахождению причины?

Все. А больше просто не знаю куда копать...

ST>http://rsdn.ru/howtoask.htm
Re[3]: Загрузка рисунка в TImage
От: Callisto  
Дата: 23.01.03 06:26
Оценка:
А под Win98 все работает на ура!
Во камень — да?
Re[4]: Загрузка рисунка в TImage
От: Sergey Ten http://www.fastalgo.com
Дата: 23.01.03 06:36
Оценка:
Здравствуйте, Callisto, Вы писали:


C>А под Win98 все работает на ура!


А под чем не работает? Операционка, видеоадаптер, разрешение экрана, количество цветов? И что будет, если поиграться с разрешением и количеством цветов?

В общем, ясно, что проблема не в коде. И то счастье
Re[5]: Загрузка рисунка в TImage
От: Callisto  
Дата: 23.01.03 06:54
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>Здравствуйте, Callisto, Вы писали:


ST>

C>>А под Win98 все работает на ура!

ST>А под чем не работает? Операционка, видеоадаптер, разрешение экрана, количество цветов? И что будет, если поиграться с разрешением и количеством цветов?


OS — Win2k(prof) (на компе 2 ОС [на разных разделах HDD] — 98, 2000)
ATI Rage 128 Ultra
1024x768
HighColor (16 бит)

Если "поиграться" — то ничего положительного
Re[4]: Загрузка рисунка в TImage
От: kavlad Россия http://www.wavesoft.ru
Дата: 23.01.03 07:01
Оценка:
Здравствуйте, Callisto, Вы писали:


C>А под Win98 все работает на ура!


Глупо, но может дело в правах доступа на файл?
В уши льется silent
Re[6]: Загрузка рисунка в TImage
От: Sergey Ten http://www.fastalgo.com
Дата: 23.01.03 07:03
Оценка:
Здравствуйте, Callisto, Вы писали:

C>OS — Win2k(prof) (на компе 2 ОС [на разных разделах HDD] — 98, 2000)

C>ATI Rage 128 Ultra
C>1024x768
C>HighColor (16 бит)

А на машине с Win98? И сколько цветов у открываемого битмапа? Пробовал открывать какой-нибудь другой, например, простой 16-цветный?

И еще интересно — загружается ли этот битмап в design-time? Ну то есть если в Object Inspector-е кликнуть на свойство Picture и сказать "Load"?
Re[5]: Загрузка рисунка в TImage
От: Sergey Ten http://www.fastalgo.com
Дата: 23.01.03 07:05
Оценка:
Здравствуйте, kavlad, Вы писали:

K>Глупо, но может дело в правах доступа на файл?


Так вроде граф. редакторы его открывают без проблем
Re[6]: Загрузка рисунка в TImage
От: Callisto  
Дата: 23.01.03 07:08
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>Здравствуйте, kavlad, Вы писали:


K>>Глупо, но может дело в правах доступа на файл?


Я для машины — администратор.
Re[7]: Загрузка рисунка в TImage
От: Callisto  
Дата: 23.01.03 07:10
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>А на машине с Win98? И сколько цветов у открываемого битмапа? Пробовал открывать какой-нибудь другой, например, простой 16-цветный?


рисунок черно-белый — 35к.

ST>И еще интересно — загружается ли этот битмап в design-time? Ну то есть если в Object Inspector-е кликнуть на свойство Picture и сказать "Load"?


грузится.
Re[8]: Загрузка рисунка в TImage
От: Sergey Ten http://www.fastalgo.com
Дата: 23.01.03 07:26
Оценка:
Здравствуйте, Callisto, Вы писали:

ST>>И еще интересно — загружается ли этот битмап в design-time?


C>грузится.


"Ничего не понимаю". Нашел два похожих случая, оба без ответов. Можно, как жест отчаяния, попробовать создать объект типа TBitmap без TImage, и посмотреть, как он себя поведет. Если поведет хорошо — попробовать присвоить его свойству Picture, или, если там уже что-то TBitmap-ное есть, сделать Assign. Если раскопаешь, дай знать, интересно.
Re[3]: Загрузка рисунка в TImage
От: Hacker_Delphi Россия  
Дата: 24.01.03 05:39
Оценка:
Здравствуйте, Callisto, Вы писали:

C>Image.Picture.LoadFromFile('d:\img.bmp');


Полный код метода давай...
посмотрим
silent
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[9]: Пошел другим путем (-)
От: Callisto  
Дата: 27.01.03 10:06
Оценка:
Мне собственно надо было грузить/выгружать картинку в/из БД.
Не хотел при этом пользовать открытый DataSet.
Но... пришлось.
В связке DataSet + TDBImage — все работает без проблем.
А с простым TImage — непонятные глюки !!!

Спасибо за участие !
Re[4]: Загрузка рисунка в TImage
От: Callisto  
Дата: 27.01.03 10:09
Оценка:
Здравствуйте, Hacker_Delphi, Вы писали:

H_D>Полный код метода давай...

H_D>посмотрим

Дык ведь метод-то не мой — стандартный.

Спасибо за участие — пошел другим путем! (см. выше)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.