Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Неясная ошибка при попытке использовании EXCEL (OLE object) [D6, Win95/98]


strel ©   (2002-06-18 19:04:00) 

Подскажите, почему возникает ошибка ПРИ ВЫХОДЕ ИЗ ПРОГРАММЫ
если исполняется следующий код : (сам код исполняется без ошибок)

Excel := CreateOleObject(InputBox"OleStr", "CreateOleObject", "Excel.Application.8") );
Excel.Visible := False;
//Excel.Workbooks.Open( OpenDialog.FileName );
Excel.Workbooks.Open( "c:\book.xls" );
WorkSheet := Excel.Workbooks[1].WorkSheets[1];
memo1.Clear;
for I := 1 to WorkSheet.Cells.CurrentRegion.Columns.Count do
memo1.Lines.add(VarToStr( WorkSheet.Cells[1,I] ));

Excel.Workbooks.Close;
Excel.Quit;

end;


Volj   (2002-06-26 21:52:00) [1]

У тебя переменная Excel объявлена как поле формы? Убери ее оттуда и все будет ok


olookin   (2002-06-26 16:28:00) [2]

или Excel:=0;

если он конечно типа variant


AFROLOV   (2002-06-25 12:54:00) [3]

Excel:= Unassigned;


ДимкаН   (2002-06-25 12:20:00) [4]

Если это 97 офис, то глюк в нем. Нужен второй сервис-пак.


VICTOR_   (2002-06-19 14:09:00) [5]

>К сожалению, это не спасло - все равно выдает ошибку
>(что-то про pointer)....
Это в DELPHI6, ты очевидно писал NIL, я даже не знаю чем они заменили Null, а я писал в DELPHI5 :((

1.Попробуй, код приведенный ниже работает без проблем в DELPHI6, возможно у тебя другое описание, у меня строка
Excel := CreateOleObject(InputBox"OleStr", "CreateOleObject", "Excel.Application.8") );
при компиляции выдает ошибку
2.Если не поможет, то попробуй увеличить минимальное значение виртуальной памяти в WINDOWS до 192MB.


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, comobj ;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var EXCEL,WorkSheet:olevariant;
I:INTEGER;
begin
Excel := CreateOleObject("Excel.Application");
Excel.Visible := False;
//Excel.Workbooks.Open( OpenDialog.FileName );
Excel.Workbooks.Open( "c:\book.xls" );
WorkSheet := Excel.Workbooks[1].WorkSheets[1];
memo1.Clear;
for I := 1 to WorkSheet.Cells.CurrentRegion.Columns.Count do
memo1.Lines.add(WorkSheet.Cells[1,I]);

Excel.Workbooks.Close;
Excel.Quit;

END;

end.


strel   (2002-06-19 00:59:00) [6]

К сожалению, это не спасло - все равно выдает ошибку
(что-то про pointer)....

беда :(


VICTOR_   (2002-06-18 20:02:00) [7]

//Попробуй вместо Excel.Quit;
WorkSheet := Null;
Excel := Null;


Наверх

Титульная страница Поиск, карта сайта Написать письмо