Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > ExcelApplication при повторном обращении ошибка


Автор: Avada 25.12.2010, 13:00
Всем привет.

Вобщем, программа сохраняет нужные данные в эксель.
Но есть одна проблема, мало того, что в директории
появляется файл RESUME.XLW, так еще и если еще раз
сделать повторный запрос(сохранить те же данные в файле),
сразу высвечивает ошибку Access Violation. Вот код:

Код

procedure TForm1.Label14Click(Sender: TObject);
var
i, j: integer;
s: string;
begin
ExcelApplication1.Connect;
// создать эксель-книгу
ExcelApplication1.Workbooks.Add(EmptyParam, 0);
// откр хмл-документ
XMLDocument1.LoadFromFile('groups.xml');
XMLDocument1.Active := true;
j := XMLDocument1.DocumentElement.ChildNodes[group].ChildNodes.Count;
i := 0;
while i <> j do begin
s := XMLDocument1.DocumentElement.ChildNodes[group].ChildNodes[i].Text;
ExcelApplication1.Range['c'+inttostr(i+5), EmptyParam].Value2 := inttostr(i+1);
ExcelApplication1.Range['c'+inttostr(i+5),EmptyParam].HorizontalAlignment := xlCenter;
ExcelApplication1.Range['D'+inttostr(i+5), EmptyParam].Value2 := s;
inc(i);
end;
XMLDocument1.Active := false;
// сохранить и выйти
ExcelApplication1.Save;
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
ExcelApplication1.Free


В чем может быть дело?

Добавлено @ 13:05
Я даж разобрался в чем дело. Дело в:
Код

ExcelApplication1.Free;

незнаю только, без него нельзя, потому что
иначе кол-во книг идет по нарастающей.
И при след. запросе сохраняет уже 2(и т.д.) книги

Добавлено @ 13:12
заменил на:
Код

ExcelApplication1.FreeOnRelease;


работает без помех. Вопрос, корректно ли это?
и остается вопрос, что это за файл RESUME.XLW,
при каждом сохранении книги его предлагает заменить,
если не заменить, запрос обработан не будет.
Этот файл тоже эксельного типа, содержит ту же информацию, 
что и книга, в которую я сохраняю.

Автор: Avada 25.12.2010, 14:41
а, не, все равно сохранять предлагает несколько за раз.
у меня в директории 4 книги, вот 4 раза и предлагает.
Помимо предложения перезаписать RESUME.XLW

подскажите, в чем дело может быть

Автор: Данкинг 25.12.2010, 14:58
Код

ExcelApplication1.DisplayAlerts:=false;

?

Автор: Avada 25.12.2010, 16:04
С одной стороны, все хорошо, хотя почему-то работает только так:
Код

ExcelApplication1.DisplayAlerts[0] := false;


там какой-то тип, wordbool, с ним как-то по-особому надо работать?

С другой стороны, файл RESUME.XLW продолжает появлятся,
благо я знаю к нему полный путь, и удаляю функцией deleteFile();

а если у другого человека этот файл будет сохранятся в другом месте?
будет гадать, что это такое. Помогите с файлом разобраться

Автор: Данкинг 25.12.2010, 18:38
Цитата(Avada @  25.12.2010,  16:04 Найти цитируемый пост)
там какой-то тип, wordbool, с ним как-то по-особому надо работать?

Нет, вот как я написал, так и надо.
Цитата(Avada @  25.12.2010,  16:04 Найти цитируемый пост)
С другой стороны, файл RESUME.XLW продолжает появлятся,

Этого не знаю, видимо, как-то с "Офисом" связано. Я с новыми "офисами" (старше MS-2003) особо не работал. smile Возможно, там какое-то автосохранение и есть.

Автор: Avada 26.12.2010, 03:57
Да, я так и сделал, только добавил [0], как показал постом выше.
Это какая-то рабочая область, безобидная в принципе, может сам удалит.
Она все-равно складывается в мои документы, даже если сохранять в другом 
месте.
Вобщем, тема решена. Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)