Главная страница
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.045 c
5-1118839875
Чайник
2005-06-15 16:51
2005.12.25
Удаление свойства-компонента.


2-1133810801
ZefiR
2005-12-05 22:26
2005.12.25
Помогите! Мой Дельфак выкидывает ошибку!


14-1133415994
WondeRu
2005-12-01 08:46
2005.12.25
С днем рождения, Керк!


14-1133531140
Иксик
2005-12-02 16:45
2005.12.25
Поговорим о Людях с Большой Буквы. Об Учителях.


1-1133179392
grach
2005-11-28 15:03
2005.12.25
Помогите, CRC-16