AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi [MAC] MessageDlg führt zu "Out of Memory"
Thema durchsuchen
Ansicht
Themen-Optionen

[MAC] MessageDlg führt zu "Out of Memory"

Ein Thema von Darlo · begonnen am 17. Feb 2014 · letzter Beitrag vom 17. Feb 2014
Antwort Antwort
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

[MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 13:49
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:
    if dsListe.Count = 0 then
      begin
        result := false;
        frmMain.myMessageDlg('Unter dem Suchbegriff '+suchwort+' wurde kein Nachname gefunden.', TMsgDlgType.mtError, mbOKCancel,0);
        exit;
      end
Ist ein BUG bzw. Workaround bekannt.
Philip

Geändert von Darlo (17. Feb 2014 um 13:54 Uhr)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: [MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 14:00
1) Passiert das nur mit OSX oder auch mit Windows?
2) frmMain ist in dem Fall instanziert?
3) Zeig mal den Code von frmMain.myMessageDlg
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: [MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 14:06
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:
function TfrmMain.myMessageDlg(msg: String; msgType: TMsgDlgType; msgBtn: TMsgDlgButtons; msgInt: Integer): boolean;
begin
  MessageDlg(msg,msgType,msgBtn,msgInt);
end;
Ursprünglich wurde die MessageDlg direkt aufgerufen
Delphi-Quellcode:
    if dsListe.Count = 0 then
      begin
        result := false;
        MessageDlg('Unter dem Suchbegriff '+suchwort+' wurde kein Nachname gefunden.', TMsgDlgType.mtError, mbOKCancel,0);
        exit;
      end
Sobald die MessageDlg aufgeht läuft der Arbeitsspeicher voll, pro Sekunde ca. +400 MB bis das Programm geschlossen wird.
Philip
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: [MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 14:07
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]);
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#5

AW: [MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 14:19
(weil du die Rückgabe nicht auswertest)
Dennoch dem Benutzer mehrere Buttons (mbOKCancel) zur Auswahl bieten, aber dann immer das Gleiche machen, egal was gedrückt wurde.

Sobald die MessageDlg aufgeht läuft der Arbeitsspeicher voll, pro Sekunde ca. +400 MB bis das Programm geschlossen wird.
Wie oft die Sekunde wird der Code denn aufgerufen?

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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: [MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 14:34
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]);
Führt leider zum selben Ergebnis....
Philip
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: [MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 14:41
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]);
Führt leider zum selben Ergebnis....
Also mit XE5 Update 2 funktioniert das einwandfrei ...
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#8

AW: [MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 16:56
Führt leider zum selben Ergebnis....
Du könntest ja mal den 2. Teil meines Posts beantworten.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: [MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 18:58
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ß
Philip
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: [MAC] MessageDlg führt zu "Out of Memory"

  Alt 17. Feb 2014, 19:01
Kannst Du ein Beispielprojekt anhängen, das den Fehler reproduziert? Am besten nur mit dem frmMain und einem weiteren, das den Aufruf enthält?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz