Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Прерывание Thread из-за исключения...   Найти похожие ветки 

 
SergP ©   (2005-11-26 20:49) [0]

Имеется процедура которая парсит данные csv-формата:


procedure ParseHistory(instr:string);
var
 rc:Histrecord;
 line,i:integer;
 s:string;
 lns:TStrings;
 fodd:boolean;
begin
 lns:=TStringlist.Create;
 try
   lns.Text:=instr;
   lns.Delete(0);
   for line:=0 to lns.Count-1 do
   begin
     s:=lns.Strings[line];
     fodd:=true;
     for i:=1 to length(s) do
       begin
         fodd:=fodd xor (s[i]=""");
         if (s[i]=",") and fodd then s[i]:=chr(13);
       end;
     s:=StringReplace(s,"""",chr(2),[rfReplaceAll]);
     s:=StringReplace(s,""","",[rfReplaceAll]);
     s:=StringReplace(s,chr(2),""",[rfReplaceAll]);
     frmmain.Memo1.Lines.Add(s);
     with TStringList.Create do
       try
         Text:=s;
         rc.htime:=StrToDateTimeDef(strings[0],0);
         rc.htype:=strings[1];
         rc.hBatch:=StrToIntDef(strings[2],0);
         rc.hemetal:=strings[3];
         rc.hWeight:=strings[4];
         rc.hToFromNumber:=strings[5];
         rc.hToFromName:=strings[6];
         rc.hEnteredAmount:=StrToCurrDef(strings[7],0);
         rc.hEnteredCurrency:=strings[8];
         rc.hRate:=StrToCurrDef(strings[9],0);
         rc.hMemo:=strings[10];
         rc.hPayeeName:=strings[11];
         rc.hPayeeAddress:=strings[12];
         rc.hRedemptionInfo:=strings[13];
         rc.hMerchantRefNumber:=strings[14]; //[исключение]
       finally
         free;
       end;
   SetLength(history,length(history)+1);
   history[high(history)]:=rc;
   end;
 finally
   lns.Free;
 end;
end;


она запускается в дополнительном потоке.

но если в [исключение] возникает исключение (по причине того что strings[14] не существует, то прерывается выполнение потока. Почему так? Ведь код заключен в try finally end ...


 
SergP ©   (2005-11-26 20:51) [1]


>      frmmain.Memo1.Lines.Add(s);


это для отладки. На это можно не обращать внимания....


 
Virgo_Style ©   (2005-11-26 20:59) [2]

SergP ©   (26.11.05 20:49)

> Почему так? Ведь код заключен в try finally end ...


try-finally-end позволяет выполнить определенные действия в любом случае, но при этом не "гасит" возникшее исключение.


 
DrPass ©   (2005-11-26 22:21) [3]


> Ведь код заключен в try finally end ...

try..except



Страницы: 1 вся ветка

Текущий архив: 2005.12.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.053 c
2-1133854420
Piero
2005-12-06 10:33
2005.12.25
Как сделать таймер в потоке


2-1133883036
Developerr
2005-12-06 18:30
2005.12.25
Как удалить запись из типизированного файла ?


5-1118427424
Wks
2005-06-10 22:17
2005.12.25
Активность фирмы


2-1134140482
Goast
2005-12-09 18:01
2005.12.25
Игнор ошибки!!!


14-1133268593
Mike Kouzmine
2005-11-29 15:49
2005.12.25
Бедные немцы!