Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка Ошибки Загрузки Файла


xn0bys ©   (2003-01-23 11:31:00) 

ГОСПОДА! ВОПРОСИК: после сообщения об ошибке на сбойном файле (EStreamError) если попытаться загрузить хороший файл, то возникает опять эта же ошибка, в то время, как если сообщения не возникало, этот файл грузится нормально.
Что делать? И как с этим боротся!


Игорь Шевченко   (2003-01-23 15:49:00) [1]

procedure TForm1.Image1DblClick(Sender: TObject);
var
Pic: TPicture;
begin
if OpenPictureDialog1.Execute then begin
Pic:= TPicture.Create;
try
Pic.LoadFromFile(OpenPictureDialog1.FileName);
except
on EInvalidGraphic do begin
MessageDlg(PChar("Unknown Picture Format"),mtError, [mbOK], 0);
Pic.Free;
Pic:= nil
end;
on EStreamError do begin
MessageDlg(PChar("Stream Error"),mtError, [mbOK], 0);
Pic.Free;
Pic:= nil
end
end;
end;
if Pic <> nil then begin
(Sender as TImage).Picture.Assign(Pic);
Pic.Free
end
end;



Работает на ура


xn0bys   (2003-01-23 15:16:00) [2]

to Игорь Шевченко

После ошибки, при попытке загрузить любой файл выдает Stream Error...
Вот така байда...


Игорь Шевченко   (2003-01-23 15:08:00) [3]

А что говорит, когда не фурычит ?


xn0bys   (2003-01-23 13:22:00) [4]

to gek

Неа, не фурычит.


Zz_   (2003-01-23 13:13:00) [5]

Попробуй на except IOResult вызвать


gek   (2003-01-23 13:13:00) [6]

Ну может так

tempPic:=TPicture.Create;
bool:=true;
try
try
tempPic.LoadFromFile(FileName);
except
on EInvalidGraphic do
begin
MessageDlg(PChar("Unknown Picture Format"),mtError, [mbOK], 0);
bool:=false;
end;
on EStreamError do
begin
MessageDlg(PChar("Stream Error"),mtError, [mbOK], 0);
bool:=false;
end;
end;
finally
if bool then
Image1.Picture.Assign(tempPic);
tempPic.free;
tempPic:=nil;
end;


xn0bys   (2003-01-23 13:06:00) [7]

to Separator

<color=Red> ПРИКИНЬ!!!</color>
НЕ РАБОТАЕТ!!!!!!!!!, всё равно та-же фигня.


Separator   (2003-01-23 12:55:00) [8]


procedure TForm1.Image1DblClick(Sender: TObject);
var
Pic: TPicture;

begin
if OpenPictureDialog1.Execute then
begin
Pic:= TPicture.Create;
try
Pic.LoadFromFile(OpenPictureDialog1.FileName);
except
on EInvalidGraphic do
begin
MessageDlg(PChar("Unknown Picture Format"),mtError, [mbOK], 0);
Pic.Free;
Pic:= nil
end;
on EStreamError do
begin
MessageDlg(PChar("Stream Error"),mtError, [mbOK], 0);
Pic.Free;
Pic:= nil
end
end;
if Pic <> nil then
begin
(Sender as TImage).Picture.Assign(Pic);
Pic.Free
end
end
end;


xn0bys   (2003-01-23 12:13:00) [9]

to Gek

извини, а куда его вставить, я думаю все равно не поможет.


xn0bys   (2003-01-23 11:57:00) [10]

to jab
в том-то и прикол, что мне надо не только BMP, а любой графический.

Та фигня что я написал работает! НО!!! только до того момента пока не произойдет ошибка (плохой файл).

to Separator
не работает, всё равно та-же фигня.


gek   (2003-01-23 11:57:00) [11]


> xn0bys © (23.01.03 11:48)
> Да а чего тогда делать с последним
> tempPic.free;
> который идет после end;

Надо еще блок try ... finally


3223(jab)   (2003-01-23 11:50:00) [12]

var
b:TBitmap;
bit:Boolean;
begin
b:=TBitmap.create;
try
b.LoadFromFile(FileName);
bit:=True;
except
MessageDlg(PChar("Unknown Picture Format"),mtError, [mbOK], 0);
end;
if bit=True then Image1.Picture.assign(b);
b.free;
end;
Не знаю что ты имел в виду... это на сколько я понял... вроде можно и так


xn0bys   (2003-01-23 11:48:00) [13]

Да а чего тогда делать с последним
tempPic.free;
который идет после end;


Separator   (2003-01-23 11:44:00) [14]

Замени все

tempPic:= nil;

на

tempPic.Free;
tempPic:= nil;


xn0bys   (2003-01-23 11:35:00) [15]

Забыл. Вот кусок кода:

tempPic:=TPicture.Create;
try
tempPic.LoadFromFile(FileName);
except
on EInvalidGraphic do
begin
MessageDlg(PChar("Unknown Picture Format"),mtError, [mbOK], 0);
tempPic:=nil;
end;
on EStreamError do
begin
MessageDlg(PChar("Stream Error"),mtError, [mbOK], 0);
tempPic:=nil;
end;
end;
if tempPic<>nil then
if tempPic.Graphic<>nil then
Image1.Picture:=tempPic;
tempPic.free;


Наверх

Титульная страница Поиск, карта сайта Написать письмо