Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Вниз

Прерывание 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
2-1133822983
vasek
2005-12-06 01:49
2005.12.25
представление (view) в делфи...


2-1133791269
sanich
2005-12-05 17:01
2005.12.25
Непонятная ошибка в StringReplace


5-1117800518
Priest
2005-06-03 16:08
2005.12.25
Не работает оператор is для класса в Dream Designer


2-1133854420
Piero
2005-12-06 10:33
2005.12.25
Как сделать таймер в потоке


14-1133797267
Antek
2005-12-05 18:41
2005.12.25
Удаление ярлыков с рабочего стола и пуска в Bat файлах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский