Форум: "Начинающим";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];
ВнизOLE Error Найти похожие ветки
← →
Dennis S (2009-01-23 10:52) [0]При работе со строками, программа выдаёт ошибку "OLE error 800A03EC".
Что это значит? В чём проблема?
Кол-во строк при получении сообщения об ошибке: 2819.
При кол-ве строк менее 2000 такого не происходит.
Что это?
← →
Dennis S (2009-01-23 10:56) [1]Ошибка при обработке:
procedure TForm1.toEXCEL1Click(Sender: TObject);
begin
panX.Color := clYellow;
mmX.Enabled := False;
mmX2.Enabled := False;
Excel := CreateOleObject("Excel.Application.9");
Excel.Workbooks.Add;
Excel.ActiveWorkBook.WorkSheets[1].Cells[1,1] := "Шифр заказа";
Excel.ActiveWorkBook.WorkSheets[1].Cells[1,2] := "Код";
Excel.ActiveWorkBook.WorkSheets[1].Cells[1,3] := "Наименование";
Excel.ActiveWorkBook.WorkSheets[1].Cells[1,4] := "Ед.";
Excel.ActiveWorkBook.WorkSheets[1].Cells[1,5] := "Кол-во";
Excel.ActiveWorkBook.WorkSheets[1].Cells[1,6] := "Доп.инфо";
Excel.ActiveWorkBook.WorkSheets[1].Range["A1:F1"].Select;
Excel.Selection.Font.Name := "Tahoma";
Excel.Selection.Font.Size := 9;
Excel.Selection.Font.Bold := True;
Excel.Selection.Interior.ColorIndex := 6;
For i := 1 to mmX2.Lines.Count do begin
pBAR2.Position := i * 100 div (mmX2.Lines.Count-1);
n := n + 1;
Excel.ActiveWorkBook.WorkSheets[1].Cells[i+1,1] := lbNAME.Caption;
S := mmX2.Lines.Strings[n-1];
Excel.ActiveWorkBook.WorkSheets[1].Cells[i+1,2] := S;
S := mmX2.Lines.Strings[n];
Excel.ActiveWorkBook.WorkSheets[1].Cells[i+1,3] := S;
S := mmX2.Lines.Strings[n+1];
Excel.ActiveWorkBook.WorkSheets[1].Cells[i+1,4] := S;
S := mmX2.Lines.Strings[n+2];
Excel.ActiveWorkBook.WorkSheets[1].Cells[i+1,5] := S;
S := mmX2.Lines.Strings[n+3];
Excel.ActiveWorkBook.WorkSheets[1].Cells[i+1,6] := COPY(S,3,(length(S)-2));
if S = "" then n := n + 4 else n := n + 5;
Application.ProcessMessages;
end;
Excel.ActiveSheet.PageSetup.Orientation := 2;
Excel.Visible := True;
panX.Color := clBtnFace;
mmX.Enabled := True;
mmX2.Enabled := True;
end;
← →
Сергей М. © (2009-01-23 11:42) [2]Выполнение какой конкретно строчки вызывает это исключение ?
← →
Плохиш © (2009-01-23 12:34) [3]
> Dennis S (23.01.09 10:52)
>
>
Я вот твою ошибку в гуглю скопировал, просто слова между ковычками и он мне выдал
Ergebnisse 1 - 10 von ungefähr 881 für OLE error 800A03EC. (0,15 Sekunden)
Не так уж и много страниц.
и первая ссылка http://entwickler-forum.de/showthread.php?t=17274
в которой подробно расписано, что кроме указанного тобой кода, в сообщении есть конкретная ошибка, возвращаемая екселем....
← →
Dennis S (2009-01-23 13:10) [4]2 Сергей М. ©
Прерывается на:
Excel.ActiveWorkBook.WorkSheets[1].Cells[i+1,6] := COPY(S,3,(length(S)-2));
2 Плохиш ©
Спасибо, конечно, но я в немецком "0"...
Поэтому, как говорил один из кино-героев: "Хотелось бы в общих чертах понять о чём речь..."
Предполагаю, что ключ есть в посте "Andreas Kosch", но в чём фишка не понимаю...
← →
Сергей М. © (2009-01-23 13:23) [5]
> Кол-во строк при получении сообщения об ошибке: 2819.
Строк каких - тех что в Мемо или тех что ты заполняешь на раб.листе ?
Каким образом ты определил, что именно на этой строчке "прерывается" ?
И чему в этот момент равна i ?
← →
Dennis S (2009-01-23 13:49) [6]2 Сергей М. ©
строк в memo, которые потом и обрабатываются в TForm1.toEXCEL1Click
при сборке и работе из Delphi выскакивает Debugger Exception Notification с выделением этой стоки в коде.
в этот момент i равна 463.
← →
Сергей М. © (2009-01-23 13:55) [7]А n в этот момент чему равна ?
И почему переменные i и n у тебя статические, а не локальные ?
← →
Плохиш © (2009-01-23 14:22) [8]
> Хотелось бы в общих чертах понять о чём речь...
я это писал?
> кроме указанного тобой кода, в сообщении есть конкретная
> ошибка, возвращаемая екселем....
← →
Dennis S (2009-01-23 17:54) [9]2 Сергей М. ©
...в этот момент i равна 463...
а n равна 2671.
попробовал другой массив пропустить - проходит нормально...
хотя кол-во строк больше: 3746
на финише: i = 3746, n = 19232
а первый не идёт и всё тут...
2 Плохиш ©
я не понимаю какая ошибка, что она значит и что нужно править...
← →
Dennis S (2009-01-26 16:00) [10]Может кто-нибудь всё-таки знает, в чём ошибка....?
← →
Сергей М. © (2009-01-26 16:35) [11]
> а n равна 2671
Чему при этом равно mmX2.Lines.Count ?
И еще раз - почему переменные i и n у тебя статические, а не локальные ?
← →
Dennis S (2009-01-26 18:16) [12]mmX2.Lines.Count = 2819 (естественно, не меняется во время цикла)
а статические они, потому что используются ещё другой процедурой.
← →
Сергей М. © (2009-01-26 19:01) [13]
> статические они, потому что используются ещё другой процедурой.
Одновременно с этой что ли ?
Ну тогда ты ССЗБ.
← →
Сергей М. © (2009-01-26 19:03) [14]procedure TForm1.toEXCEL1Click(Sender: TObject);
begin
..
n := n + 1; //Чему равно n ?!!!!
← →
Dennis S (2009-01-27 00:07) [15]Будешь тут ССЗБ... :(
то, что ты докопался до "n", "i" - это конечно правильно, код ещё пока кривой...
но обозначенная мною трабла не в этом...
сейчас кое-что нашёл по этой ошибке в сети - пытаюсь разобраться сам.
← →
Dennis S (2009-01-27 00:20) [16]Всё, нашёл в чём фишка!!! :))
В одной из строк из-за смещения данных в "источнике", при экспорте в Excel в одной из ячеек таблицы получается нечто, похожее на "=45" на это Excel и ругается!!!
Кстати, как обработать эту ошибку и вывести сообщение типа "Смещение данных в ячейке "Х", информация будет заменена на "ХХХ"!" и продолжить процесс?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.04 c