Главная страница
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.059 c
14-1133263914
Laymer
2005-11-29 14:31
2005.12.25
FireWall и ICQ


14-1133039450
Алекскндр
2005-11-27 00:10
2005.12.25
Книги по Delphi - Посоветуйте


2-1133787205
Antek
2005-12-05 15:53
2005.12.25
Удаление ярлыков с рабочего стола и пуска в Bat файлах


2-1133636186
ZeFiR
2005-12-03 21:56
2005.12.25
Как определить наличие файла на диске?


1-1131357368
Bogdan1024
2005-11-07 12:56
2005.12.25
взять хэндл комбобокса?