Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

Stack overflow   Найти похожие ветки 

 
Roman-620   (2005-08-08 11:45) [0]

Такая проблемка.

При работе программы выскакивает ошибка "Stack Overflow".
Причём я сам-то в этот момент стек не использую как таковой.
Имеется большая табличка StringGrid содержимое которой экспортируется в Excel (Ole)
XLApp.WorkBooks[1].WorkSheets[1].Cells[i,j]:=StringGrid1.Cells[j,i];
В цикле.

И вот в определённый момент этот цикл прерывается указанной ошибкой.
Видимо в этот момент средства Delphi / Windows действительно используют стек.

Как избавиться от этой ошибки или же каким-нибудь другим образом производить экспорт данных?

Ни таблиц, ни запросов, ни баз данных как таковых нет вообще.
Есть просто стандартная StringGrid c набором значений.


For i:=1 to n do
Begin
XLApp.WorkBooks[1].WorkSheets[1].Cells[i,1]:=StringGrid1.Cells[0,i];
XLApp.WorkBooks[1].WorkSheets[1].Cells[i,2]:=StrToInt(StringGrid1.Cells[1,i]);
...
XLApp.WorkBooks[1].WorkSheets[1].Cells[i,3]:=StrToDataTime(StringGrid1.Cells[18,i]);
End;


Из этого понятно, что вообще делается в цикле.
Так вот, цикл до конца не проходит.
На каком-то из шагов он прерывается вышеобозначенным сообщением об ошибке.


 
Roman-620   (2005-08-08 11:46) [1]

Надо срочно


 
Roman-620   (2005-08-08 11:46) [2]

Надо срочно


 
dmitry501 ©   (2005-08-08 11:51) [3]

БД IB используется?


 
Roman-620   (2005-08-08 12:31) [4]

Никаких БД.
Просто StringGrid с набором данных


 
Slym ©   (2005-08-08 14:04) [5]

var WorkSheet:variant;
i,j:integer;
begin
WorkSheet:=XLApp.WorkBooks[1].WorkSheets[1];
For i:=1 to n do
 for j:=0 to 18 do
   WorkSheet.Cells[i,j+1]:=StringGrid1.Cells[0,i];
End;


 
Roman-620   (2005-08-08 14:44) [6]

2 Slym
Не вижу разницы между моим и твоим кодом.
Дело в том, что у меня экспортируются значения не все как строчки, а некоторые как даты, цифры и т.д.
А если написать упрощённо, то твой код как раз и получится.
И вот именно в этом цикле и возникает такая хрень


 
Slym ©   (2005-08-08 15:39) [7]

Roman-620   (08.08.05 14:44) [6]
XLApp.WorkBooks[1].WorkSheets[1];

А разница большая...
XLApp.WorkBooks[1].WorkSheets[1]:
1. Поиск проперти WorkBooks.
2. Вызов Функции чтения проперти WorkBooks с параметром 1
3. Поиск проперти WorkSheets.
4. Вызов Функции чтения проперти WorkSheets с параметром 1

И это у тебя n*18 раз!

А про Stack Overflow - вроде все чисто... Смотри в других местах, ибо зачатие ошибки может происходить в ином месте от ее рождения


 
GanibalLector ©   (2005-08-09 00:17) [8]

>StrToInt,StrToDataTime
без них пробовал??? Для примера сделай что-то типа :="LOL";
или try/except поставь ;)

>For i:=1 to n do
я надеюсь,что n:=StringGrid1.RowCount-1


 
Polevi ©   (2005-08-09 08:41) [9]

какой ужасный код
на королевстве есть статья на тему работы с Excel, почитай ее



Страницы: 1 вся ветка

Текущий архив: 2006.09.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
15-1156136875
Карелин Артем
2006-08-21 09:07
2006.09.17
Вызывают ли энергетические напитки привыкание?


1-1154366246
Варяг
2006-07-31 21:17
2006.09.17
Форма без границ и заголовка


2-1156676413
KidMan
2006-08-27 15:00
2006.09.17
Как сделать, чтобы в определенное время появлялось новое окно


4-1147775296
bedny
2006-05-16 14:28
2006.09.17
Кнопки в Internet Explorer


2-1157024180
Ref
2006-08-31 15:36
2006.09.17
DBGrid & CheckBox