با عرض سلام و خسته نباشید خدمت دوستان گرامی
من از درگاه زرین پال در برنامه استفاده میکنم و پرداخت هم صورت میگیرد و مشکلی از این بابت نیست.
مشکل زمانی به وجود میاد که بخواهم از نرم افزار خارج بشم پیغام خطای Unexpected Memory Leak نمایش داده میشه.
من تمام متغییر ها آزاد میکنم ولی متاسفانه بازم این خطا نمایش داده میشه نمیدونم چه کار کنم تمام راه ها امتحان کردم ولی جواب نداد که نداد.
لازم به ذکر هست کد ReportMemoryLeaksOnShutdown := True من قرار دادم در نرم افزار .
program ZarinPal;
uses
Forms,
UFrmMain in 'UFrmMain.pas' {FrmMain};
{$R *.res}
begin
ReportMemoryLeaksOnShutdown := True;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TFrmMain, FrmMain);
Application.Run;
end.
در کل وقتی کد ReportMemoryLeaksOnShutdown := True فعال هست پیغام خطا نمایش داده میشه که فضا آزاد نشده است و این بده چون همین طور داره فضا داره اشغال میشه.
من سورس کدی که نوشتم به پیوست گذاشتم لطفا دوستان کمک کنید کدشم اینجا مینویسم.
procedure TFrmMain.Button1Click(Sender: TObject);
var
Info : PaymentRequest;
Rse : PaymentRequestResponse;
Authority : Integer;
begin
Info := PaymentRequest.Create;
Rse := PaymentRequestResponse.Create;
Try
Info.MerchantID := Trim(Edit1.Text);
Info.Amount := StrToInt(Trim(Edit2.Text));
Info.Description := Trim(Edit3.Text);
Info.Email := Trim(Edit4.Text);
Info.Mobile := Trim(Edit5.Text);
Info.CallbackURL := Trim(Edit6.Text);
Rse := wsdl.GetPaymentGatewayImplementationServicePortTyp e().PaymentRequest(Info);
Authority := StrToInt(Rse.Authority);
shellexecute(handle,'open',Pchar('https://www.zarinpal.com/pg/StartPay/'+IntToStr(Authority)+'/ZarinGate'), nil, nil, sw_show);
Edit7.Text := IntToStr(Authority);
Edit8.Text := IntToStr(Rse.Status);
Finally
begin
Rse.Free;
Info.Free;
end;
End;
end;
این خطا میدهد
An unexpected memory leak has occurred. The unexpected small block leaks are:
21 - 28 bytes: PaymentRequestResponse x 1