Q&A

  • 스트링그리드의 내용을 텍스트로 저장..
col이 2개인 스트링그리드의 내용을 파일로 저장하려는데 엔터키가 먹지 않고 계속 이어지면서 저장이 되네요..아무래도 엔터키값을 넣는데 문제가 있는 거 같은데 고수님들의 도움 바랍니다..


procedure TfmFTVDataMgm.FlatSpeedButton1Click(Sender: TObject);
var
  sFishFileName, BackupName, sInput : String;
  ATextFile : TextFile;
  R_File : File;
  i, FileHandle, StringLen : Integer;
begin
  if SaveDialog1.Execute then
  begin
    if FileExists(SaveDialog1.FileName) then
    begin
      BackupName := ExtractFileName(SaveDialog1.FileName);
      BackupName := ChangeFileExt(BackupName, '.BAK');
      if not RenameFile(SaveDialog1.FileName, BackupName) then

        raise Exception.Create('Unable to create backup file.');
    end;

    FileHandle := FileCreate(SaveDialog1.FileName);
    for i := 1 to sgData.RowCount - 1 do
    begin
      StringLen := Length(sgData.Cells[1, i]) + 2 + Length(sgData.Cells[2, i]) ;
      sInput := '';
      sInput := sgData.Cells[1, i] + '  ▶' + sgData.Cells[2, i] + #13#10 ;
      FileWrite(FileHandle, sInput, SizeOf(StringLen));
    end;
    FileClose(FileHandle);
  end;
end;
2  COMMENTS
  • Profile
    최용일 2002.04.19 06:11
    안녕하세요. 최용일입니다.

    길이 구하는 부분이 잘못된거 같군요...

    StringLen := Length(sgData.Cells[1, i]) + 2 + Length(sgData.Cells[2, i]) ;
    sInput := '';
    sInput := sgData.Cells[1, i] + '  ▶' + sgData.Cells[2, i] + #13#10 ;
    FileWrite(FileHandle, sInput, SizeOf(StringLen));

    StringLen은 아래 sInput보다 적은 값이 들어가네요... '  ▶'와 #13#10의 크기를 잘못 계산하신거 같네요. 2대신 6이 들어가야맞을거 같구요...

    SizeOf(StringLen)은 StringLen의 값이 아닌 StringLen의 형크기인 4가됩니다.

    아래와 같이 바꾸어보세요...

    sInput := '';
    sInput := sgData.Cells[1, i] + '  ▶' + sgData.Cells[2, i] + #13#10 ;
    StringLen := Length(sInput) ;
    FileWrite(FileHandle, sInput, StringLen);

    ^^ 항상 즐코하세요...

  • Profile
    김도형 2002.04.19 04:56
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      outFile  : TextFile;
      nI       : integer;
    begin
       AssignFile( outFile, 'c:111.txt' );
       reWrite( outFile );
       for nI := 0 to 4 do
          WriteLn( outFile, stringGrid1.cells[ 0 , nI ] + '  ▶' +  stringGrid1.cells[ 0 , nI ] );

       CloseFile( outFile )
    end;

    이런식으로 저장하면 될껍니다..

    보시구  맞게 수정해서 쓰면 됩니다.. ^^