Q&A

  • TStringList에 대해서....-2-
안녕 하세요..

TStringList 구현 부분에서 조언을 구하고자 합니다.

먼저. 설명을 하자면..

'aaa|bbb|ccc|랜덤한 데이터 값'   -> TStringList에 들어갈 데이터 입니다.
                                   이런씩으로 데이터가 들어가며, 랜덤한 데이터 값
                                   사이에는 '|'(구분자)가 3개가 들어갑니다.
TStringList에 들어갈 데이터중 '|' 구분자는 총 6개에서 5개 둘중 하나입니다.
5개가 될 경우는 맨 앞부분에 오는 'aaa'값이 빠질수가 있기 때문입니다.

그리고, 다른 데이터와의 구분은 맨 앞데이터('aaa'), 세번째 데이터('ccc')가 다른

데이터와 구분할 수 있는 기준이 됩니다.

좀.. 복잡하네요.. ^^;;

아래 소스를 보시고 다른 좋은 방법이 있으시면.. 조언 부탁드립니다.

DB로 구성해두 될것 같은데..

이 부분은 수시로 access를 해야 할 듯 해서요..

그냥.. TStringList로 하는 편이 좋을 듯해서.. 정했습니다.

이 틀에서.. 좀 개선할 사항이 있다면.. 조언 부탁드리겠습니다.

그럼.. 좋은 하루 보내세요..

//////////////////////////////////////////////////////////////////////////////
여기서 부터는 소스를 정리한겁니다.

strKey1, strKey2 : String;
SList , InfoList : TStringList;
bAdd : Boolean;

bAdd가 True가 되면.. 새로 추가를 하는거구.. 아니면. 그냥. 지나감.

strKey1 := 'aaa'+'|';
SetLength(strKey2, 5);
strKey2 := Format('%.5d|', [변수값]);

For i := 0 To InfoList.Count - 1 Do
Begin
  if (Pos(strKey1, InfoList[i]) > 0) or (Pos(strKey2, InfoList[i]) > 0 ) Then
  Begin
   SList := TStringList.Create;
   ExtractStrings(['|'], [' '], PChar(InfoList[i]), SList);
   //이렇게 해서 이전 InfoList에 있는 값들을 잘라낸다.
   //이 부분이 문제인 부분입니다..
   //어떻게..결과는 나오는것 같은데요. 영.. 맘에 들지 않네요..
   //분명 이상이 있을 듯한.. 예감이 드는 부분이라서요..  ^^;;
   //
   if SList.Count > 6 Then
      InfoList[i] := strMsg+'|'+SList[3]+'|'+SList[4]+'|'+SList[5]+'|'+SList[6]
   Else  //count가 6 아니면 5만 나오기 때문....
      InfoList[i] := strMsg+'|'+SList[2]+'|'+SList[3]+'|'+SList[4]+'|'+SList[5];
   bAdd := false;
  End;

  if bAdd = true Then
  Begin
    //추가..
  End;
End;

//////////////////////////////////////////////////////////////////////////////

1  COMMENTS
  • Profile
    이승민 2005.06.22 17:30
    구분자가 있는 문자열을 잘라내기를 하는건가요??
    그럼 이렇게 하면 되지않나요??

    var
      SList  :TStringList;
    begin
      try
        SList                      := TStringList.Create;
        SList .Delimiter      := '|';
        SList .DelimitedText  := 'aaa|bbb|ccc|어쩌구|저쩌구|등등';
        // 이렇게 하면 구분자로 문자열이 분리되어 List 에 저장이 되는데 이걸 원하시는 건지??
      finally
        SList.Free;
      end;
    end;