Güncelleştirme: D2007'ye özgü gibi görünüyor. D2010'da eski sürümde çalıştığı gibi çalışır.D2007 ile bir Özel durum satırından Halt (n) ile bir hata kodu nasıl verilir?
ben gibi eception Handler bloğunda yakalanan İstisna türüne bağlı olarak bir çıkış kodu dönmek istiyorum: Bir İstisna bloktan durdur (n) çağırarak maalesef D2007 içinde
program test;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
Exitcode: Integer;
begin
Writeln('Enter error code:');
Readln(Exitcode);
try
raise EExternal.Create('sdsdkfjh');
except
on E:EExternal do
begin
Writeln(E.Classname, ': ', E.Message);
Halt(Exitcode);
end;
end;
end.
, hep döner Halt() öğesine ne geçerseniz gidin, bir Çıkış kodu 1. olursa olsun Halt(1)
olsun ne istediğini çıkış kodu
procedure ExceptHandler(ExceptObject: TObject; ExceptAddr: Pointer); far;
begin
ShowException(ExceptObject, ExceptAddr);
Halt(1); // <= @#$##@#$!
end;
Ve:
İstisna işleyicisi çıkan SysUtils.ExceptHandler çağırarak, beklemede (non İptal) İstisnalar temizler Sonlandrmay, çağırır Görünüşe çünkü!
Yani soru şu:
basitçe nasıl büyüdü hangi İstisna bağlı istenilen çıkış kodu döndürebilir?
, gerçekten doğru ERRORCODE çıkmıyor. Beklendiği gibi çalışmayabilir ErrorCode almak için kullandığınız yöntem olduğundan şüpheleniyorum. – zz1433
@Aldo. Hayır, D2007. Aynısı, D2007 ve D2010 ile Mike tarafından beklendiği ve raporlandığı gibi farklı şekilde davranır. –
Lütfen QC'de büyük bir rapor hazırlayın (http://qc.embarcadero.com/); Muhtemelen bir D2007 yükseltmesi olmayacak olsa da, hangi hataların 'bilinen' olduğunu görmek mümkün. –