0

ユーザーが定義した行をDIUnicodeで読み取る方法を教えてください。たとえば、行8から始めますか?たとえば、8行目から11行目までこの1回の支払い..etc

===========================================
|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 
-------------------------------------------------------------------------- 
4

1 に答える 1

0

与えられたサンプルでは、​​最も簡単なのは stringlizst を使用して、最初の 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;

区切り文字に基づいて文字列を文字列の配列に分割するのように、2 つの高度な文字列リストを使用して、文字列の内部解析を試みることもできます。

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;
于 2013-03-18T10:37:20.887 に答える