Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[16074] Re:엑셀다운로드 csv 파일 변환시 out of memory 오류
지나다 [] 1033 읽음    2019-12-20 13:46
파일스트림에 직접 쓰세요.

test 님이 쓰신 글 :
: 데이터 14만건 이상 파일을
: 엑셀로 다운받으려고합니다..
: csv 파일 변환시.. out of memory 에러가 발생하여 ㅠㅠ 해결방법을 구하고자 합니다.
: 소스는 아래와 같습니다.
:
:
:
: procedure Tf8030.SaveToCSV(DataSet: TDataSet; FileName: String);
: const
:   Delimiter: Char = ';'; // In order to be automatically recognized in Microsoft Excel use ";", not ","
:   Enclosure: Char = '"';
: var
:   List: TStringList;
:   S: String;
:   I: Integer;
:   function EscapeString(s: string): string;
:   var
:     i: Integer;
:   begin
:     Result := StringReplace(s,Enclosure,Enclosure+Enclosure,[rfReplaceAll]);
:     if (Pos(Delimiter,s) > 0) OR (Pos(Enclosure,s) > 0) then  // Comment this line for enclosure in every fields
:         Result := Enclosure+Result+Enclosure;
:   end;
:   procedure AddHeader;
:   var
:     I: Integer;
:   begin
:     S := '';
:     for I := 0 to DataSet.FieldCount - 1 do begin
:       if S > '' then
:         S := S + Delimiter;
:       S := S + EscapeString(DataSet.Fields[I].FieldName);
:     end;
:     List.Add(S);
:   end;
:   procedure AddRecord;
:   var
:     I: Integer;
:   begin
:     S := '';
:     for I := 0 to DataSet.FieldCount - 1 do begin
:       if S > '' then
:         S := S + Delimiter;
:       S := S + EscapeString(DataSet.Fields[I].AsString);
:     end;
:     List.Add(S);
:   end;
: begin
:   List := TStringList.Create;
:   try
:     DataSet.DisableControls;
:     DataSet.First;
:     AddHeader;  // Comment if header not required
:     while not DataSet.Eof do begin
:       AddRecord;
:       DataSet.Next;
:     end;
:   finally
:     List.SaveToFile(FileName);
:     DataSet.First;
:     DataSet.EnableControls;
:     List.Free;
:   end;
: end;

+ -

관련 글 리스트
16073 엑셀다운로드 csv 파일 변환시 out of memory 오류 test 1065 2019/12/20
16074     Re:엑셀다운로드 csv 파일 변환시 out of memory 오류 지나다 1033 2019/12/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.