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

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

Использование try/exception [D6, WinXP]


Галинка ©   (2004-07-01 11:47:00) 

Всем доброго времени суток )).

Проблема такая...:
1) есть функция
function GetLinesPoints(InFile:string):TLines;
var
L,P:integer;
Stri:string;
TekLines:TLines;
InF:Text;
begin
 AssignFile(InF,InFile);
 Reset(InF);
 L:=1;
  while not EoF(InF) do
   begin
    P:=0;
    SetLength(TekLines,L);
    ReadLn(InF,Stri);
     repeat
      Inc(P);
      SetLength(TekLines[L-1],P);
      TekLines[L-1,P-1]:=GetPoint(Stri);
      ReadLn(InF,Stri);
     until Stri='';
    Inc(L);
   end;
  if Odd(L) then ErrIndic(1);
 TekLines:=LinePointsSort(TekLines);
 Result:=TekLines;
end;

которая читает в массив пары координат, при помощи другой функции

function GetPoint(Arg:string):TPlPoint;
var
i:byte;
SubStr:string;
TekPoint:TPlPoint;
begin
 DecimalSeparator:='.';
 i:=0;
    repeat
     inc(i);
     SubStr:=copy(Arg,i,1);
    until SubStr=' ';
   SubStr:=copy(Arg,1,i-1);
    try
     TekPoint.X:=StrToFloat(SubStr);
    except
     on EConvertError do
      begin
       ErrIndic(1);
       Exit;
      end;
    end;
   SubStr:=copy(Arg,i+1,Length(Arg)-i);
    try
     TekPoint.Y:=StrToFloat(SubStr);
    except
     on EConvertError do
      begin
       ErrIndic(1);
       Exit;
      end;
    end;  
 Result:=TekPoint;
end;

2) Вызов производиться так

   MyLines:=Raschet.GetLinesPoints(OpenDialog.FileName);

Внимание вопрос: КАК СДЕЛАТЬ ТАК, ЧТОБЫ НА ПОЯВЛЕНИЕ ОШИБКИ ОСУЩЕСТВЛЯЛСЯ ВЫХОД ИЗ ЭТОГО ВЫЗОВА...


Гаврила   (2004-07-01 11:53:00) [1]

в секции Except поставь raise вместо exit


inic   (2004-07-01 11:52:00) [2]

Внутри
except
on SomeException

после своих обработок написать "raise;"


Наверх

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