답답해서 이렇게 글을 올립니다. 참고로 저는 아주 초보입니다.. 이해하기 쉽게좀 가르쳐 주세요...^^
제가 하고자 하는것은 아래와 같은 내용의 텍스트를 읽어서 배열에 담으려고 하거든요..
자세히 설명드리자면 아래 " 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)
내용으로봐서는 그다지 어렵지 않은것 같네요..
여러가지 방법이 있겟지만은...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;
아니면 각섹션이 일정한 라인을 따른다면 루프를 돌때 그만큼 읽고 다른 섹션으로 인식하면 되겟죠...
그럼..