2013-03-18 2 views
0

Скажите, как DIUnicode считывает строки, которые пользователь определяет, например, начинать с строк 8? Например, я не начать с рядами 8 до 11 это один платеж ..etcDelphi Скажите, как DIUnicode читает строки, которые пользователь определяет, например, начинать с строк 8?

=========================================== 
|Period 01.01.2012 31.12.2012 
Saldo 01.01.2012    
---------------------------------------------------------------- 
| Date  | Correspondet: Bank/account/Tax Name      | 
| Payment  | Remark             | 
----------------------------------------------------------------   | 
|04.01.2012  | Bank:00883 account:200004000000005936111 tax:000000000| 
|    |paynet             | 
|    |00644blbalbalbalbalbalbalbalN-4774      | 
|    | 24.03.2010            | 
---------------------------------------------------------------- 
|06.01.2012  |BANK:00883 account:200004000600005000111 tax:000000000 | 
|    |paynet             | 
|    |00644blablbalbalbalbalbalblab-4774      | 
|    | 24.03.2010 
-------------------------------------------------------------------------- 
+1

Читать построчно, считая их. Начните работу, если ваш счетчик больше 7? –

+1

Что вы пробовали? Показать код. Мы не можем сказать, являетесь ли вы экспертом по Delphi или полным новичком. Возможно, вы не знаете, как создать объект. Мы не можем сказать. Какая версия Delphi? –

+0

Я бы использовал 'TStringList.LoadFromFile', затем читал строки' 7,8,9, ... Pred (.Count) ' Современные версии Delphi имеют SL, способные читать файлы в Юникоде, для устаревших версий есть сторонние stringlists unicode-able. –

ответ

0

С данной выборке наиболее простая вещь заключается в использовании stirnglizst и перебирать каждую строку, но первые 7 строк.

Я также не знаю, почему вы сказали об diUnicode библиотеке. Но я предполагаю, что ваш файл закодирован в UTF8. Если на самом деле он использует другой вкус Unicode или не Unicode, измените код соответствующим образом.

var sl: TStrings; s: String; i: integer; 
begin 
    sl := TStringList.Create; 
    try 
     sl.LoadFromFile('c:\Table.txt', TEncoding.UTF8); 
     for i := 0 to 7 do sl.Delete(0); 

     for s in sl do begin 
      // do some work with s 
      ShowMessage(Copy(s,18, Length(s))); 
     end; 
    finally 
     sl.Free; 
    end; 
end; 

Вы также можете попытаться сделать внутренний разбор строки с использованием двух современных stringlists, как в Split a string into an array of strings based on a delimiter

var slF, slR: IJclStringList; l, s: string; 

slF := TJclStringList.Create; slF.LoadFromFile('table.txt'); 
slR := TJclStringList.Create; 

slF.Delete(0).Delete(0).Delete(0).Delete(0).Delete(0).Delete(0).Delete(0); // delete top 7 lines 

for l in slF do begin 
    if StartsStr('-----', l) then continue; // skip separator 

    slR.Split(l, '|', true).Trim; 

    for s in slR do {nothing or something} Application.Title := s ; 
    ShowMessage('Date or void: '+ slR[0]); 
    ShowMessage('Transfer details: '+ slR[1]); 
end; 
slF := nil; slR := nil;