Q&A

  • 이런걸 좀 하려고 하는데 어떻게 해야하죠?
다음과 같이 텍스트 파일을 불러들여서 수정해서 저장하려고 하는데 어떻게 할지를 모르겠네요..
완전 초보이니 자세히좀 설명좀 해주세요..

////////불러올 파일 내용///////////
1   1    10
1   2    20
1   3    10
.
.
.
.
.
////////////끝/////////

////////수정할 내용//////////////
1   1    10    15
1   2    20    10
1   3    10    10
.
.
.
.
.
////////////끝/////////
  
1  COMMENTS
  • Profile
    김기홍 2007.02.23 21:45
    요구하신 작업을 할려면 문자열 처리에 대해서 어느정도 알아야 합니다.

    보통 텍스트 파일과 연동해서 작업할려면 TStringList 콤포넌트가 제일 적합한 것 같습니다.
    텍스트 파일에서 자료입력은 LoadFromFile
    텍스트 파일로 저장하는 것은 SaveToFile 메소드 사용하면 됩니다.

    텍스트 파일은 한줄단위로 자료 처리가 가능합니다.
    줄단위로 스트링 변수에 입력과 복사가 가능합니다.
    1___1____10

    스트링변수의 내용을 찾아내기 위해서는 문자열 연산에 대해서 알아야 합니다.
    델파이에서는 기본적으로 씨형식이 아닌 파스칼 형식의 문자열 자료형식을 사용합니다.
    일정부분 복사에는 COPY
    부분문자열 위치 찾기는 POS
    일부분 삭제는 DELETE
    리딩 없애기는 TRIM, TRIMLEFT, TRIMRIGHT
    대문자변환은 UPPERCASE
    등... 여러가지 있습니다.

    걍 다음 작업을 할 수 있도록 프로그램 추가합니다.
    먼저 폼에 버튼 두개와 메모 두개를 적당히 배치하시구 메모1에 밑의 내용을 입력해주세요.

    처음버튼에 코딩할 내용입니다.
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       Memo1.Lines.SaveToFile('input.txt');
    end;

    둘째버튼에 코딩할 내용입니다.
    procedure TForm1.Button2Click(Sender: TObject);
    var
      intext : TStringList ;
      instr : String ;
    begin
      intext:=TStringList.Create;
      intext.LoadFromFile('input.txt');
      Memo2.Lines.Clear;
      for si:=1 to Memo2.Lines.Count do begin
        instr:=Memo2.Lines.Strings[si-1];
        if si=1 then instr:=instr+format('%6d',[15]);
        if si=2 then instr:=instr+format('%6d',[10]);
        if si=3 then instr:=instr+format('%6d',[10]);
        Memo2.Lines.Add(instr);
      end;
      Memo2.Lines.SaveToFile('output.txt');
    end;

    어느정도 설명이 되었을것 같습니다.
    문자열 처리는 상당히 재미있는 부분입니다.
    수고하셔요...