نمایش نتایج 1 تا 10 از 10

نام تاپیک: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

  1. #1

    تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    سلام

    ممنون می شم مفهوم خطای زیر و علت ایجاد رو بفرماید.

    بانک اینتربیس.

    فیلدها و رکودها توسط کاربر ایجاد می شود. با ایجاد فیلد جدید و سپس انجام محاسبه بر روی رکوردها، به هنگام خروج از برنامه، پیغام زیر داده می شه !


  2. #2
    کاربر دائمی آواتار حسین شهریاری
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ایران
    پست
    794

    نقل قول: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    سلام

    یک پیام آشنا هست.منظور تداخل حافظه است.یک پروسه داره از آدرس پروسه دیگری که رم هست استفاده میکنه.چرا که خود پروسه ایجاد شده ولی آدرسی به اون اختصاص داده نشده.یا این که اصطلاحا "دو پروسه همزمان وارد بخش بحرانی شده اند" و دارند یک دستورالعمل مشترک بین دو پروسه(همچنین حیاتی و تاثیر گذار را)دستکاری میکنند.

    و اما از دید کاربردی احتمالا طریقه ایجاد(Create) فیلدهایی که توسط کاربر ایجاد میشن یه نقصی داره!
    چرا که دو کار مختلف(بنا بر متن پیام) داره بر اساس یه آدرس انجام میشه.

    موفق باشید

  3. #3

    نقل قول: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    ممنون از پاسخ شما

    برای ورود رکوردها، یه مجموعه editbox ساخته می شود. ولی خوب به درسی FreeAndNill میشن !!

    من باید نحوه ایجاد فیلد و رکورد روی جدول رو چک کنم یا مشکل از ادیت هاست! تعداد ادیت باکس ها هم خیلی زیاده ! سه آرایه که هر کدان 1000 تا هستند. در مجموع سه هزار تا ادیت باکس که البته محدودیت بالای Create است. در شرایط عادی اینقدر تشکیل نمی شه.

    ضمنا شاید در مجموع (به علت محاسبات پی در پی) در مجموع 20 تا آرایه (از 1 تا 1000) استفاده کردم.

  4. #4

    نقل قول: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    مطلب دیگر

    من در مجموع از 6 تا Dataset استفاده می کنم. اضافه کردن هر فیلد و رکورد، تو هر 6 تا جدول اعمال می شود. رو هر جدولی اطلاعات خوانده شده، محاسبات انجام و نتیجه به جدول بعدی منتقل می ود. dataset ها رو هم بعد از خواندن داده ها و محاسبات نمی بندم (نمیدونم مشکلی ایجاد می کنه !)

  5. #5
    کاربر دائمی آواتار حسین شهریاری
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ایران
    پست
    794

    نقل قول: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    خیر نبستن Dataset نمیتونه مزید بر علت باشه!!
    درضمن فکر کنم شما بهتره نهوه ساختن فیلدها را مورد برسی قرار بدید و ببینید که درست انجام میشه یانه؟

    در ضمن میشه بفرمایید این چه پروژه ای است که تمام کارها باید داینامیک انجام بشه؟

  6. #6

    نقل قول: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    نقل قول نوشته شده توسط shahriar63 مشاهده تاپیک
    خیر نبستن Dataset نمیتونه مزید بر علت باشه!!
    درضمن فکر کنم شما بهتره نهوه ساختن فیلدها را مورد برسی قرار بدید و ببینید که درست انجام میشه یانه؟

    در ضمن میشه بفرمایید این چه پروژه ای است که تمام کارها باید داینامیک انجام بشه؟
    ممنون از پاسخ شما

    تو این برنامه اختیار اضافه و حذف فیلد و رکورد دست کاربر است. در واقع کاربر اطلاعات خودش رو وارد می کنه و برنامه تنها کار محاسبات رو روی داده های ورودی انجام می ده و سپس نمایش خروجی به صورت نمودار. نوع کار یه جور روش تصمیم گیری است که البته مبنای ریاضی داره و یکی از روش های operation research است. کاربر از انبوه اطلاعات وارده، تنها یک عدد رو به عنوان جواب دریافت می کنه ! وظیفه این برنامه خوندن داده ها و سپس تبدیل آنها به جواب نهایی است.

    محاسبات در 9 مرحله انجام می شود و من از ابتدا خروجی تمام مراحل رو به جدول ها منتقل می کردم. اما از روز گذشته سعی کردم که یکی یکی جدول ها رو حذف کنم و تمام کار ها رو صرفا تو متغییرها انجام بدم. با این حال استفاده از سه جدول اجتناب ناپذیره !!

  7. #7
    کاربر دائمی آواتار حسین شهریاری
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ایران
    پست
    794

    نقل قول: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    موفق باشی!

    میشه بفرمایید که مثلا یه Edit را چگونه در زمان اجرا ایجاد میکنید؟دقیقا کدشا بنویس تا ببینم آیا میتونه خطایی داشته باشه.

  8. #8

    نقل قول: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    var
    Form3: TForm3;
    GB : array[1..1000] of TGroupBox;
    E1: array[1..1000] of TEdit;
    E2: array[1..1000] of TEdit;
    E3: array[1..1000] of TEdit;
    sl,sm,sh : string;
    l : integer;
    s1,s2 : string;

    implementation
    uses unit1, Unit2;
    {$R *.dfm}


    procedure TForm3.F3CB1Change(Sender: TObject);
    var
    i,u,c,d,f,h,g,kll,z,v : Integer;
    b : real;

    begin
    button5.Enabled := true;
    f := form1.CDS1.RecordCount;
    c := 0; d := 0; h := 0; l := 1; v := 0; z := 0;
    b := frac(f/4);

    if b = 0 then
    g := round(f/4)
    else
    g := round(f/4)+1;

    For u:=1 To g Do
    begin
    For i:=1 To 4 Do
    Begin
    if h > f-1 then
    break

    else
    begin
    GB[l]:=TGroupBox.Create(SBox1);
    GB[l].Parent:= SBox1;
    GB[l].Width := 200;
    GB[l].Height := 55;
    GB[l].SendToBack;
    GB[l].Font.Size := 7;
    GB[l].Font.Style := Font.Style + [fsBold];
    GB[l].Font.Color := clNavy;
    E1[l]:=TEdit.Create(SBox1);
    E2[l]:=TEdit.Create(SBox1);
    E3[l]:=TEdit.Create(SBox1);
    E1[l].Parent:= SBox1;
    E2[l].Parent:= SBox1;
    E3[l].Parent:= SBox1;
    E1[l].Width := 50;
    E2[l].Width := 50;
    E3[l].Width := 50;
    E1[l].Top:=d+40;
    E2[l].Top:=d+40;
    E3[l].Top:=d+40;
    GB[l].Top:=z+15;
    E1[l].Left:=20+c;
    E2[l].Left:=90+c;
    E3[l].Left:=160+c;
    GB[l].Left:=15+v;
    E1[l].Text := 'Min.';
    E2[l].Text := 'Midd.';
    E3[l].Text := 'Max.';
    E1[l].onKeyPress := SGKeyPress;
    E2[l].onKeyPress := SGKeyPress;
    E3[l].onKeyPress := SGKeyPress;
    d := d+75;
    z := z+75;
    h := h+1;
    l := l+1
    end;
    end;
    c := c + 250;
    v := v + 250;
    d := 0;
    z := 0;

    end;

    E1[1].SetFocus;
    SQLDS3.Open;
    Clientdataset1.Open;

    kll := 1;
    while not ClientDataSet1.Eof do
    begin
    E1[kll].Text := ClientDataSet1.fieldbyname(F3CB1.Items[F3CB1.ItemIndex]+'_lEFT').AsString;
    E2[kll].Text := ClientDataSet1.fieldbyname(F3CB1.Items[F3CB1.ItemIndex]+'_MEDDIUM').AsString;
    E3[kll].Text := ClientDataSet1.fieldbyname(F3CB1.Items[F3CB1.ItemIndex]+'_HIGH').AsString;
    if ClientDataSet1.fieldbyname(F3CB1.Items[F3CB1.ItemIndex]+'_lEFT').AsString = '' then
    E1[kll].Text := 'Min.';
    if ClientDataSet1.fieldbyname(F3CB1.Items[F3CB1.ItemIndex]+'_MEDDIUM').AsString = '' then
    E2[kll].Text := 'Midd.';
    if ClientDataSet1.fieldbyname(F3CB1.Items[F3CB1.ItemIndex]+'_HIGH').AsString = '' then
    E3[kll].Text := 'Max.';

    GB[kll].Caption := ClientDataSet1.fieldbyname('Criteria').AsString;
    kll := kll + 1;
    ClientDataSet1.Next;
    end;
    ClientDataSet1.Refresh;
    end;

    حلقه ها برای تشکیل ستون های چهارتایی ادیت ها در Scrolbox نوشته شده اند. مثل شکل زیر که ادیت 5 رفته ستون دوم.

    قسمت آخر کد برای خواندن اطلاعات قدیمی از جدول نوشته شده تا در صورت لزوم بشه اونها رو هم ادیت کرد. مثل شکل زیر که دو تا از رکوردها مقدار دارند در حالیکه بقیه خالی هستند.




    شرمنده اگر پاسخ من طول می کشه !! متاسفانه اینترنت ADSL من قطعه و این D. up هم که استفاده می کنم، تقریبا افتضاحه !!

  9. #9
    کاربر دائمی آواتار حسین شهریاری
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ایران
    پست
    794

    نقل قول: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    دیدم علی الظاهر که مشکلی توی ایجاد کامپوننتها ندارید!
    شما فقط روی خمون بخش ایجاد فیلد کار کنید.

    موفق باشید

  10. #10

    نقل قول: تحلیل علت بروز خطا در هنگام خروج از برنامه (عکس)

    اینکه آدرس رو دار 00000000 برمیگردونه، یعنی به احتمال زیاد دارید سعی میکنید از شی ایی استفاده کنید که هنوز Create نشده.
    پیدا کردنش معمولا کار خاصی نداره، برنامه رو در داخل دلفی اجرا کنید، و وقتی خطا رخ داد، برنامه را Pause کنید، و Call Stack را نگاه کنید. اولین وروی پنجره Call Stack اسم تابع یا متدی هست که در هنگام اجرای آن، AV رخ داده.
    اگر پنجره Call Stack را پیدا نکردید؛ به منوی View، گزینه Debug Windows برید، و Call Stack را انتخاب کنید.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •