Q&A

  • 스트링그리드에 값 넣기
안녕하세요..?
허접 눈이큰아이입니다.

염치없게 글을 또올리게 되었습니다.
알고 싶은것은 스트링그리드에 값을 넣는 방법인데
Str:=123,123,123,123,123,.....
이렇한 문자열이 있습니다. 구분자는 ,가되겠구여..
하나의 셀안에 넣는 방법은 알겠는데..
구분자로 구분지어서 ,와 ,사이의 값들만 스트링그리드에 넣구 싶습니다.
어찌해야 할지 도저히 생각이 안나서요..
많은 답변 부탁 드립니다.
1  COMMENTS
  • Profile
    정경철 2003.08.12 23:01
    구분자로 구분되어 있는지료를 읽은 방법은 여러가지가 있겠지만..
    다음은 전철호님이 올리신 예제 입니다 참고 하십시오.

    {
    구분자로 이루어진 문자열을 분리하여 읽기
    예를 들어 Text 화일에서
    1111,전철호,경기도 수원,212-9667
    PasString(str,',',1); -> 1111
    PasString(str,',',2); -> 전철호
    }
    function PasCount(const s,delimiters:string):integer;
    var
      delimiter : Boolean;
      Count,i : Integer;
    begin
      Count := 0;
      delimiter := True;
      if Length(s) > 0 then
      begin
        i := 1;
        While (Pos(s[i],delimiters) <> 0) and (i <= Length(s)) do inc(i);
        For i := i to Length(s) do
          if Pos(s[i],delimiters) <> 0 then
            delimiter := True
          else begin
            if delimiter = True then inc(count);
            delimiter := False;
          end;
      end;
      PasCount := Count;
    end;

    function PasString(const s,delimiters : String ; num : Integer) : String;
    var
      i,j,sLength,sStart,sEnd : Integer;
    begin
      if PasCount(s,delimiters) >= num then
      begin
        sStart := 1;
        while (Pos(s[sStart],delimiters) > 0) and (sStart <= Length(s)) do
          inc(sStart);
        for j := 1 to num-1 do
        begin
          while pos(s[sStart],delimiters) = 0 do inc(sStart);
          while pos(s[sStart],delimiters) <> 0 do inc(sStart);
        end;
        sEnd := sStart;
        for i := sStart to Length(s) do
        begin
          if s[i] = delimiters then Break;
          if s[i] <> delimiters then inc(sEnd);
        end;
        sLength := sEnd - sStart;
        PasString := Trim(Copy(s,sStart,sLength));
      end else PasString := '';
    end;