Q&A

  • 텍스트를 읽어서 배열에 담기?
답답해서 이렇게 글을 올립니다. 참고로 저는 아주 초보입니다.. 이해하기 쉽게좀 가르쳐 주세요...^^
제가 하고자 하는것은 아래와 같은 내용의 텍스트를 읽어서 배열에 담으려고 하거든요..
자세히 설명드리자면 아래 " Intersection     1" ..." Intersection     2"... Intersection     3" 부분이 하나의 블록이라고 보시면 됩니다..
이렇게 된 텍스트를 배열에 담을때..  “Intersection     1”부터  “ Cycle Length =   140 seconds (no offset, controller uncoordinated)”줄까지를 하나의 배열에 담으려고 하거든요.. 즉 OPT라는 배열의 1번에 intersection  1의 내용을 2번에 intersection  2의 내용을 담으려고 합니다...자동으로요..앞의 Intersection   1에서 1을 읽어들여 배열 1에 나머지 모든 내용을 넣으려고 하거든요..
초보의 설명이 부족합니다..이해가 안가시면 전화번호 남겨주세요..제가 연락해서 여쭤보께요...그럼 부탁드립니다..


------------------------------------------------
Intersection     1   Pretimed - Splits are fixed
------------------------------------------------

Interval Number  :      1    2    3    4    5    6    7    8

Intvl Length(sec):   14.0  3.0 35.0  3.0 15.0  3.0 64.0  3.0
Intvl Length  (%):     10    2   25    2   11    2   46    2

Pin Settings  (%):  100/0   10   12   37   39   50   52   98

Phase Start (No.):      1         2         3         4

Interval Type    :      V    Y    V    Y    V    Y    V    Y

Splits      (sec):     17        38        18        67
Splits        (%):     12        27        13        48
Links Moving     :    102       101       106       105
                       104       109       108       111
                       111       103                 107
                       112       110                 112

Cycle Length =   140 seconds (no offset, controller uncoordinated)


------------------------------------------------
Intersection     2   Pretimed - Splits are fixed
------------------------------------------------

Interval Number  :      1    2    3    4

Intvl Length(sec):   90.0  3.0 44.0  3.0
Intvl Length  (%):     65    2   31    2

Pin Settings  (%):  100/0   65   67   98

Phase Start (No.):      1         2

Interval Type    :      V    Y    V    Y

Splits      (sec):     93        47
Splits        (%):     67        33
Links Moving     :    201       204
                       209       203
                       203       212

Cycle Length =   140 seconds (no offset, controller uncoordinated)


------------------------------------------------
Intersection     3   Pretimed - Splits are fixed
------------------------------------------------

Interval Number  :      1    2    3    4    5    6    7    8

Intvl Length(sec):   27.0  3.0 27.0  3.0 17.0  3.0 57.0  3.0
Intvl Length  (%):     19    2   19    2   12    2   42    2

Pin Settings  (%):  100/0   19   21   40   42   54   56   98

Phase Start (No.):      1         2         3         4

Interval Type    :      V    Y    V    Y    V    Y    V    Y

Splits      (sec):     30        30        20        60
Splits        (%):     21        21        14        44
Links Moving     :    309       304       304       301
                       308       303       303       309
                                 312       312       303

Cycle Length =   140 seconds (no offset, controller uncoordinated)


------------------------------------------------
Intersection     4   Pretimed - Splits are fixed
------------------------------------------------

Interval Number  :      1    2    3    4    5    6

Intvl Length(sec):   17.0  3.0  7.0  3.0 ****  3.0
Intvl Length  (%):     12    2    5    2   77    2

Pin Settings  (%):  100/0   12   14   19   21   98

Phase Start (No.):      1         2         3

Interval Type    :      V    Y    V    Y    V    Y

Splits      (sec):     20        10       110
Splits        (%):     14         7        79
Links Moving     :    404       404       401
                       403       403       409
                       412       412       403
**** Value too large for field =    107.0

Cycle Length =   140 seconds (no offset, controller uncoordinated)

1  COMMENTS
  • Profile
    백록화 2004.11.08 12:18
    yo

    내용으로봐서는 그다지 어렵지 않은것 같네요..

    여러가지 방법이 있겟지만은...Intersection 를 기준으로 해서 검색하셔서 짜르면 되겟군요

    일단 텍스트 파일을 읽습니다. Memo나 StringList로

    sList:= TStringList.Create;
    sList.LoadFromFile('c:\test.txt');

    자 그럼 한줄씩 앞에문자를 짤라서 검사합니다. Intersection이 있는지..

    cStr:= Copy(sList.Strings[nI],1,12);

    이때 InterSection이 하나 이상이 들어있으니깐 일단 for 문으로 전체를 검사하되 해당 줄을 찾을때마다 그 줄을 따로 기록해두지요.

    전체를 검사했으면, 게임끝이지요..

    var
    sList: TStringList;
    sRowList: TStringList;
    cStr: String;
    nI: Integer;
    begin
    sList:= TStringList.Create;
    sRowList:= TStringList.Create;

    sList.LoadFromFile('....');

    For nI:=0 To sList.Count-1 Do
    Begin
       cStr:= Copy(sList.Strings[nI],1,12);
       If cStr = 'InterSection' Then
        sRowList.Add(IntToStr(nI));
    End;

    For nI:= 0 To sRowList.Count-1 Do
    Begin
      // sRowList.String[nI] 부터 sRowList.Strings[nI+1]-n 까지가 InterSection 라인 번호가 되겟지요...배열로 넣든 어떻게 하든지 알아서...
      // -n은 각섹션 사이에 있는 ---- 라든가 공백은 제거하기위해서..
    End;
    end;

    아니면 각섹션이 일정한 라인을 따른다면 루프를 돌때 그만큼 읽고 다른 섹션으로 인식하면 되겟죠...

    그럼..