ورود

View Full Version : علت اين خطا چه مي‌باشد؟



ehsanbn
پنج شنبه 18 تیر 1388, 22:06 عصر
با سلام

من يك برنامه نوشته‌ام با ديتابيس sql وقتي كه از داخل خود دلفي run مي كنم و سپس ميخواهم از برنامه خارج بشوم خطاي زير را ميدهد نمي دونم مشكل كجاست؟ كسي ميتونه منو راهنمايي كنه.

خطا:

Project Project1.exe raised exception class EStackOverflow with message 'Stack overflow'.

tdkhakpur
جمعه 19 تیر 1388, 00:30 صبح
سلام
خوب این پیغام معمولا وقتی صادر مشود که کار با حجم زیاد داخل برنامه در حال لود شدن هست که از stack استفاده می کند. و ممکن هست در حین برنامه این خطا صادر نشود ولی موقع خروج به هنگام پاکسازی پشته دچار خطا شود.
نمی دانم داخل برنامه چکار کردید ولی فکر کنم شما هر کلاسی را که برای استفاده بکار می برید new و در اخر delete کنید این خطا رفع بشود.

ehsanbn
جمعه 19 تیر 1388, 10:21 صبح
دوست گرامي ميتونيد بيشتر توضيح بدهيد.

tdkhakpur
جمعه 19 تیر 1388, 16:16 عصر
سلام
این قسمت از کد را ارسال کنید.

با ديتابيس sql وقتي كه از داخل خود دلفي run مي كنم

ehsanbn
جمعه 19 تیر 1388, 17:47 عصر
منظورم اين است كه وقتي برنامه از داخل دلفي run ميكنم چنين مشكلي دارد ولي وقتي كه روي فايل exe در خارج از دلفي كليك مي كنم و run ميشود چنين مشكلي هنگام خارج شدن از برنامه ندارم.

tdkhakpur
جمعه 19 تیر 1388, 18:30 عصر
خوب حتما به هنگام خروج دیتابس را غیر فعال نمیکنید.
ولی بدون بررسی کد نمیتوان پاسخ درست داد.

Ali.Afzal
جمعه 19 تیر 1388, 19:34 عصر
با سلام،

آیا شما احیانا از کامپوننتی غیر از کامپوننت های دلفی استفاده می کنید؟

ehsanbn
شنبه 20 تیر 1388, 00:01 صبح
بايد چه كدي را نشان بدم كه شما دوستان متوجه بشويد مشكل از كجاست؟
خير- اصلاً از كامپوننت استفاده نمي كنم.

Ali.Afzal
یک شنبه 21 تیر 1388, 12:44 عصر
با سلام

میشه کد SQL را که به دیتابیس ارسال می کنید و همچنین نحوه اتصال به بانک را توضیح بدید؟

DlphIran
چهارشنبه 30 دی 1388, 09:05 صبح
دوستان من هم همچین مشکلی رو دارم ،‌ از کامپوننت alpha استفاده می کنم حتی کامپوننت رو برای برنامه غیر فعال که می کنم باز هم این مشکل وجود داره ،‌ حجم برنامه ام خیلی زیاده ،‌ فرمها در زمان اجرای برنامه ساخته نمی شن و با کلیک روی هر عنوان فرم مربوطه ساخته میشه ، تمام Adoquery های توی فرمها متصل هستن به یک connection که روی فرم اصلی قرارش دادم . موقع بستن فرم اصلی اتصال connection رو قطع می کنم اما باز هم این پیغام خطا میده.
در ضمن من از دلفی 6 , sql server2000 استفاده میکنم و در برنامه ام 101 فرم دارم

Ali.Afzal
چهارشنبه 30 دی 1388, 19:01 عصر
با سلام،

اگر امکان دارد طریقه لود کردن فرمها را بنوسید! یعنی از چه کدی استفاده می کنید؟

یک نکته : هیچ گاه ار یک connection واحد استفاده نکنید! زیرا اگر تغییری در فیلد های بانک اطلاعاتی رخ دهد،
باید connection اصلی یک بار بسته و باز شود و این باعث می شود تمام Connection های دیگری که در فرم های دیگر در حال استفاده است از بین برود!!

برای اینکار یک Function بنویسید که خود Connection String را بسازد و در OnCreate فرم Connection String کامپوننت ADdoQuery را پر کند!

DlphIran
پنج شنبه 01 بهمن 1388, 09:50 صبح
براي لود كردن هر فرم بعد از كليك روي عنوان مربوطه از منو از اين خط استفاده ميكنم و عنوان فرم رو عوض ميكنم


Application.CreateForm(TForm1, Form1);

استفاده از يه كانكشن واحد چه مشكل خاصي ايجاد ميكنه؟
من مقدار دادن به كانكشن اصلي رو با خواندن از يه فايل txt انجام ميدم. در زمان ساخته شدن فرم ورود رمز اين كانكشن بصورت ذيل مقدار ميگيره:


procedure TForm2.FormCreate(Sender: TObject);
var a:textfile;
st:string;
begin
assignfile(a,'c:\IP.txt');
reset(a);
while not eof (a) do
begin
readln(a,st);
edit6.text:=st;
end;
closefile(a);

adoconnection1.ConnectionString:=form2.Edit6.Text;

end;