![]() |
[MAC] MessageDlg führt zu "Out of Memory"
Hallo zusammen,
wenn ich unter OS X eine MessageDLG erzeuge stürzt das Programm mit "Out of Memory" ab. Es wird auf der GUI eine Funktion aus einer anderen Unit aufgerufen, die die Nachricht anzeigen soll.
Delphi-Quellcode:
Ist ein BUG bzw. Workaround bekannt.
if dsListe.Count = 0 then
begin result := false; frmMain.myMessageDlg('Unter dem Suchbegriff '+suchwort+' wurde kein Nachname gefunden.', TMsgDlgType.mtError, mbOKCancel,0); exit; end |
AW: [MAC] MessageDlg führt zu "Out of Memory"
1) Passiert das nur mit OSX oder auch mit Windows?
2) frmMain ist in dem Fall instanziert? 3) Zeig mal den Code von
Delphi-Quellcode:
frmMain.myMessageDlg
|
AW: [MAC] MessageDlg führt zu "Out of Memory"
Hi,
ja es passiert nur unter OS X. Die Windows-Version läuft super stabil. Hatte nur mal probiert die MessageDlg über das Hauptformular aufzurufen:
Delphi-Quellcode:
Ursprünglich wurde die MessageDlg direkt aufgerufen
function TfrmMain.myMessageDlg(msg: String; msgType: TMsgDlgType; msgBtn: TMsgDlgButtons; msgInt: Integer): boolean;
begin MessageDlg(msg,msgType,msgBtn,msgInt); end;
Delphi-Quellcode:
Sobald die MessageDlg aufgeht läuft der Arbeitsspeicher voll, pro Sekunde ca. +400 MB bis das Programm geschlossen wird.
if dsListe.Count = 0 then
begin result := false; MessageDlg('Unter dem Suchbegriff '+suchwort+' wurde kein Nachname gefunden.', TMsgDlgType.mtError, mbOKCancel,0); exit; end |
AW: [MAC] MessageDlg führt zu "Out of Memory"
Ich würde hier ganz stumpf eine Exception werfen -> Look and Feel bleibt dabei gleich (weil du die Rückgabe nicht auswertest)
Delphi-Quellcode:
if dsListe.Count = 0 then
raise Exception.CreateFmt('Unter dem Suchbegriff %s wurde kein Nachname gefunden.',[suchwort]); |
AW: [MAC] MessageDlg führt zu "Out of Memory"
Zitat:
Zitat:
Und jetzt sag blos nicht, das ist in einem Timer? Während der Dialog angezeigt wird, arbeiten Timmer fleißig weiter und es werden gaaaaaaaaanz viele Dialoge übereinander aufgemacht, was irgendwann bestimmt überläuft. |
AW: [MAC] MessageDlg führt zu "Out of Memory"
Zitat:
|
AW: [MAC] MessageDlg führt zu "Out of Memory"
Zitat:
Delphi-Quellcode:
unit FormMain;
interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls; type TForm1 = class( TForm ) Button1 : TButton; Button2: TButton; procedure Button1Click( Sender : TObject ); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1 : TForm1; implementation {$R *.fmx} procedure TForm1.Button1Click( Sender : TObject ); begin MessageDlg( 'Test', TMsgDlgType.mtError, mbOKCancel, 0 ); end; procedure TForm1.Button2Click(Sender: TObject); begin raise Exception.Create('Test'); end; end. |
AW: [MAC] MessageDlg führt zu "Out of Memory"
Zitat:
|
AW: [MAC] MessageDlg führt zu "Out of Memory"
Hi,
nein es sind keine Timer involviert und es wird die Funktion nur einmal ausgeführt. An einer anderen Stelle funktioniert die MessageDlg auch ohne Probleme. An anderen Stellen wird Sie angezeigt und gleichzeitig läuft der speicher voll. Wenn ich die MessageDlg da auskommentiere wird der restliche Code ohne Probleme abgearbeitet. Btw. an dieser Stelle ist eigentlich nur ein "OK-Button", wenn mehrere Buttons zur Verfügung stehen hat dieses natürlich einen Sinn und wird ausgewertet ;-) Gruß |
AW: [MAC] MessageDlg führt zu "Out of Memory"
Kannst Du ein Beispielprojekt anhängen, das den Fehler reproduziert? Am besten nur mit dem frmMain und einem weiteren, das den Aufruf enthält?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz