Главная страница
    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.045 c
15-1156319224
IGray
2006-08-23 11:47
2006.09.17
Перегнать DOC --> PDF с оглавлением


2-1156984662
ph0sgen
2006-08-31 04:37
2006.09.17
Вопрос по DLL


2-1156408396
Начинающий_1
2006-08-24 12:33
2006.09.17
Сравнение двумерных динамических массивов


2-1156506003
Alral
2006-08-25 15:40
2006.09.17
Разбитие строки.


15-1156836324
dom2
2006-08-29 11:25
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский