![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка Ошибки Загрузки Файла
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;