Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Corba";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
15-1156456327
SkyRanger
2006-08-25 01:52
2006.09.17
Онлайн игры и истиная сущность человека


3-1152614214
Lexxxx
2006-07-11 14:36
2006.09.17
поиск пропущеных данных


3-1152511382
Nic
2006-07-10 10:03
2006.09.17
Небольшая локальная база данных


2-1156548051
vain
2006-08-26 03:20
2006.09.17
TShellListView


2-1156710099
ffo
2006-08-28 00:21
2006.09.17
Как правильно зарегистрировать класс?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский