Przerwanie procedury

0

Witam wszystkich...

Mam taki problem i może ktoś wie jak go roziwązać...

procedure SetCos(var cos);  //tu przekazuje przez var dlatego często z tego korzystam
begin
  if not costam then exit;
end;

//i wprogramie mam dużo procedur w których wywołuje procedure SetCos..

Jak zrobić żeby przerywała mi się procedura która wywołuje SetCos...

Taka kombinacja też mi nie pasuje bo te if-y zaśmiecają kod:

function SetCos(s: string): boolean;
begin
  if not costam then result := false;
end;

procedure costaminnego;
begin
  if not SetCos then exit;
  if not SetCos then exit;
  if not SetCos then exit;
end;

Chodzi mi o coś takiego:

procedure SetCos(var cos);  
begin
  if not costam then exit;
end;

procedure costaminnego;
begin
  SetCos;  
  //dalszy kod...
  SetCos; //i tu jak nie wypali, to żeby wykonywanie procedury 'costaminnego' zostało przerwane
  //dalszy kod...
  SetCos;
  //dalszy kod...
end;

Zakładając, że mam 10 takich linii to się robi sieczka z tymi if-ami... :-/

Mam nadzieję, że czegoś nie pogmatwałem. Może jakieś parametry przykazywać ?? Nie wiem..

Pzdr

0

Niestety, function SetCos(var cos) : boolean; to jedyne rozwiązanie. Te ify nie śmiecą aż tak bardzo ;P

0

Niestety, function SetCos(var cos) : boolean; to jedyne rozwiązanie. Te ify nie śmiecą aż tak bardzo ;P

A "chichy wyjątek" - EAbort?

0

Brodny..
Czy mógłbyś napisać coś więcej ??
I jak zastosować to do mojego problemu ??

Pzdr

0

Brodny..
Czy mógłbyś napisać coś więcej ??
I jak zastosować to do mojego problemu ??

Pzdr

EAbort jest to klasa wyjątku, która jest domyślnie ignorowana przez Delphi (patrz: źródła obiektu Application). Może on zostać użyty do wydostania się np. z zagnieżdżonego bloku wywołań. W takim kodzie:

procedure Proc1;
begin
  Proc2;
end;

procedure Proc2;
begin
  Proc3;
end;

procedure Proc3;
begin
  // ...
end;

(pomijam deklaracje zapowiadajace :) ) aby przerwać procedurę Proc1 z procedury Proc3 (np. z powodu złej wartości) można wygenerować wyjątek. Normalny wyjątek zostanie obsłużony przez Delphi (wyświetlenie komunikatu), ale obsługa wyjątku EAbort jest domyślnie pusta, co spowoduje efekt, o który nam chodziło (wydostanie się z bloku zagnieżdżonych wywołań), ale nie spowoduje wyświetlenia komunikatu o błędzie. Uff, mam nadzieję, że zrozumiale to napisałem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1