Q&A

  • txt->db입력 구분자 comma 일때 String 길이

txt파일을 읽어 한 라인씩 String 으로 받아서 comma 구분자로 구분한뒤
db에 입력하려고 합니다

여기서 임의로 String 을 450 까지도 읽어오게 하고 싶은데..
그렇게 임의로 하게 되면 에러가 나네요.. ^^;;
S ->String literals may have at most 255 elements 로 당근 나오네요
어떻게  더 늘이는 방법이 없을까요..?! 너무 무지한 질문인가..
  


procedure TFormcomma.SaveDB(const FileName: TFileName);
var

  F: TextFile;
  S: String[255];   // 한 스트링 최대길이 일단 450 으로 지정하고 싶은데

  List : TStringList;
  i : integer;
  vdcd, vdnm : string; // 일단 테스트로 2개필드씩만 입력

begin

  S:='';
  table1.Open;
  table2.Open;

  AssignFile(F, FILENAME);
  Reset(F);

  try
    while not Eof(F) do
    begin  //while begin

      Readln(F, S);            
      List := TStringList.Create;
      List.commaText := S;              
       vdcd := List[0];
       vdnm := List[3];

          if length(vdcd)=3 then        
          begin          
            table2.Insert;  
            table2['ACD03_FACD'] := '82000'+VDCD ;
            table2['ACD03_FANM'] := VDNM;
            table2.Post;
            S :='';
          end
          else
          begin
            table1.Insert;  
            table1['ACD03_VDCD'] := VDCD ;
            table1['ACD03_VDNM'] := VDNM;
            table1.Post;
            S :='';
          end;

    VDCD :='';
    VDNM :='';

    end; // while  not eof do end

  finally
    CloseFile(F);
  end;

end;


1  COMMENTS
  • Profile
    나도초보 2003.07.21 19:57
    string뒤에 []를 쓰고 숫자를 기입하면 자동으로 ShortString으로 변환되어서 255문자 이상은 에러가 납니다. 참고로 AnsiString은 2G까지 문자를 집어넣을 수가 있군요.. 와우!

    그냥 var s:string 으로 선언해서 쓰시면 AnsiString이 됩니다.
    정 길이를 제한 해야 한다면 SetLength()함수를 쓰십시오.