Q&A

  • OLE없이 엑셀파일 만들기에 대한 질문입니다.

델파이 초보자입니다. 실습해보다가 질문이 있어서요..

강좌에 있는  'OLE없이 엑셀파일 만들기' 소스를 실행해보니 에러가 떠요.
  

1. type에 어떤 컴포넌트가 들어가야 하는지 궁금합니다.
            DBGrid1: TDBGrid;
            Button1: TButton;
  
2. 아래 소스를 컴파일 하면
        CXlsBof[4] := BuildNumber;
    위의 부분에서
    [Error] Unit1.pas(35): Left side cannot be assigned to
    이런 에러가 뜹니다.

  
--------------------------------------------------------------------------

const
CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0);
CXlsEof: array[0..1] of Word = ($0A, 00);
CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
CXlsNumber: array[0..4] of Word = ($203, 14, 0, 0, 0);
CXlsRk: array[0..4] of Word = ($27E, 10, 0, 0, 0);

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure XlsBeginStream(XlsStream: TStream; const BuildNumber: Word);
begin
CXlsBof[4] := BuildNumber;
XlsStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
end;

procedure XlsEndStream(XlsStream: TStream);
begin
XlsStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
end;

procedure XlsWriteCellRk(XlsStream: TStream; const ACol, ARow: Word; const AValue: Integer);
var
V: Integer;
begin
CXlsRk[2] := ARow;
CXlsRk[3] := ACol;
XlsStream.WriteBuffer(CXlsRk, SizeOf(CXlsRk));
V := (AValue shl 2) or 2;
XlsStream.WriteBuffer(V, 4);
end;

procedure XlsWriteCellNumber(XlsStream: TStream; const ACol, ARow: Word; const AValue: Double);
begin
CXlsNumber[2] := ARow;
CXlsNumber[3] := ACol;
XlsStream.WriteBuffer(CXlsNumber, SizeOf(CXlsNumber));
XlsStream.WriteBuffer(AValue, 8);
end;

procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word; const AValue: string);
var
L: Word;
begin
L := Length(AValue);
CXlsLabel[1] := 8 + L;
CXlsLabel[2] := ARow;
CXlsLabel[3] := ACol;
CXlsLabel[5] := L;
XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
XlsStream.WriteBuffer(Pointer(AValue)^, L);
end;

procedure TForm1.Button1Click(Sender: TObject);
var FStream: TFileStream;
   I, J: Integer;
begin
FStream := TFileStream.Create('c:e.xls', fmCreate);
try
   XlsBeginStream(FStream, 0);
   for I := 0 to 99 do
     for J := 0 to 99 do
     begin
       XlsWriteCellNumber(FStream, I, J, 34.34);
      // XlsWriteCellRk(FStream, I, J, 3434);
      // XlsWriteCellLabel(FStream, I, J, Format('Cell: %d,%d', [I, J]));
     end;
   XlsEndStream(FStream);
finally
   FStream.Free;
end;
end;
1  COMMENTS
  • Profile
    박종록 2006.01.06 19:58




    ----    이부분을 바꾸세요   상수를 ----> 변수로 바꾸십시오

    이렇게 하면 큰 문제 없이 만들어 지는 것을 테스트 했습니다.
    -- 새해를 맞이하여 하시는 잘 되시길 ....
    • 박상윤
      2005.01.24 22:23
      설치프로그램 필요 없습니다. 윈도우에서 기본적으로 제공하고 있습니다. 프로그램을 하시려면..vfw...
    • 델초보
    • 2005.01.23 08:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 마이크로김
      2005.01.23 10:33
      영수증프린터 ole 를 사용하시면 제어가 쉬운데요 영수증프린터 업체 문의하시면 쉽게 알수 있을...
    • 이정택
    • 2005.01.22 23:56
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2005.01.24 22:31
      Run Time 시 에도 원하시는 스타일로 바꾸실 수 있습니다. Disign Time 에 바꾸실때처럼 코드로 처리하...
    • 최미경
    • 2005.01.21 23:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재현
      2006.02.26 22:54
      안녕하세요. 파도랑입니다. 우선 답변이 많이 늦었습니다. 그동안 해결을 하셨는지 궁금하네요. 저와...
    • 주재환
    • 2005.01.21 21:03
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 백화현
    • 2005.01.21 20:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • Galaxy
      2005.01.25 03:27
      aabkorea 입니다. 얼굴 본지 벌써 4년이 다 되어 가네요 잘 지내 시죠 요즘음 aabkorea는 회사 규모을 ...
    • 오병주
      2005.01.21 23:15
      이렇게 하면 되네요... ^^ procedure TForm1.Button1Click(Sender: TObject); var   szName...
    • 임동호
    • 2005.01.21 19:51
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 주재환
      2005.01.21 22:04
      procedure ExcelToGrid(sFile : String; sGrid : TStringGrid;sCol:Integer);
    • 임동호
      2005.01.25 04:17
         [Error] Unit1.pas(56): Undeclared identifier: 'CreateOLEObject'    ...
    • 채팅
      2005.01.21 20:53
      일단 mdb를 제외하고는 한글메뉴얼은 없다고 보는 것이 맞습니다. 영어에 익숙해 지는 길밖에 없숩니다. ...
    • 신지수
    • 2005.01.21 02:15
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 신지수
    • 2005.01.20 23:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박종록
      2006.01.06 19:58
      ----    이부분을 바꾸세요   상수를 ----> 변수로 바꾸십시오 ...
    • 이충효
    • 2005.01.20 22:31
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.01.21 02:07
      흠... 스패머외에는 웹게시판에 기록되는 IP를 속일 이유가 없을거 같은데... 이게 왜 필요하신지요??
    • 이충효
      2005.01.21 02:43
      후~~(한숨) 스패머 아니고요,, 해커도 아닙니다. 지금 만들고있는 프로그램때문에 그래요. idhttp ...
    • 최용일
      2005.01.21 04:44
      원하시는 바가 뭔지 정확히 파악이 안되서... ㅠㅠ UDP같은 단방향 통신에선 IP를 속이는것이 가능하지...
    • 한비
    • 2005.01.20 22:16
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김현학
    • 2005.01.20 19:38
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 무심코
      2005.01.20 22:33
      질문번호 102123 번을 참조하시면 해당 디렉토리의 파일을 가져올수 있습니다. 가져온 파일 리스트를 갖...
    • 김현학
      2005.01.20 23:02
      답변에 감사드립니다. 님께서 올려주신 소스는 한폴더 있는 파일의 내용을 정확히 가져 옵니다. 그런데, ...
    • 모영철
      2005.01.21 18:35
      여기 질답게시판에 있는것을 약간 수정... (했었나?) 암튼 그래서 쓰던겁니다. 잘되더군요... 혹시나...
    • 김현학
      2005.01.21 22:48
      제 글에 답변을 주신 무심코 님과 모영철 님께 감사의 말씀을 올립니다. 모영철님께서 주신 소스를 ...
    • 김종균
    • 2005.01.20 18:09
    • 3 COMMENTS
    • /
    • 0 LIKES
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2005.01.20 18:48
      aaa이 선택되었다고 하면 ddd를 선택하려면 Treeview1.Items[0].GetNextVisible; ggg를 선택하려...
    • 김종균
      2005.01.20 23:35
      AAA -BBB -CCC DDD -GGG EEE -FFF 이렇게 되었을때 EEE는 어떻게 해야하는지요... 한번에 갈 수는 ...
    • 난 백만당적이다.
      2005.01.21 19:21
      EEE를 선택하려면 GetNextVisible를 한번 더 하면 되겠죠.... TreeView에서 Item은 모두 펼쳐졌을때 ...
    • 남경만
    • 2005.01.20 08:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 권태훈
      2005.01.21 20:45
      *=이 몬가 한참 생각했는데 아마도 아우터 조인 명령인가 봅니다. +=으로 해보십시요.
    • 남경만
      2005.01.24 23:14
      mssql에서 *=로 하지 안나요? 중요한 것은 *=, +=이 아니고.. LEFT OUTER JOIN으로 해도 안된다는 것이죠...
    • Crazy™
      2005.01.27 20:24
      mssql 에서 *= 와 left outer join 는 같은겁니다.  줄여서 *= 이렇게 쓰죠. b를 서브쿼리로 묶...
    • 박동호
    • 2005.01.20 01:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 공성환
      2005.01.20 01:47
      인라인뷰는 지원되는 DB가 있고 없는 DB가 있습니다. 지가 ms sql은 사용않해봤는데... ms에서는 지원이 ...
    • 바디
    • 2005.01.20 00:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이승민
      2005.02.02 01:20
      ActiveX 는 웹브라우져에 붙여 넣는 응용프로그램이라고 생각하시면 됩니다. 실제 응용프로그램에서 폼...