MessageDlg bringt PC zum hängen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

MessageDlg bringt PC zum hängen

Beitragvon MacWomble » 4. Feb 2019, 09:12 MessageDlg bringt PC zum hängen

Ich habe ein Problem mit dem MessageDlg in einem von einigen Fenstern (alle anderen sind exakt gleich aufgebaut und funktionieren wie sie sollen)

In der Zeile
Code: Alles auswählen
if MessageDlg('Diese Akte wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then

hängt sich der Rechner (Mint 19.1 64Bit) auf. Auf dem Desktop geht absolut nichts mehr, ausser dem Bewegen des Mauszeigers, im Terminal kann ich mich nicht anmelden, weil dort immer ein Return hin gesendet wird. D.h. , ich kann zwar Benutzer und Passwort eingeben,
Das Programm kommt aus der Routine auch nicht mehr heraus. Der Dialog wird auch nicht angezeigt.

Code: Alles auswählen
procedure TfrAktenliste.btnDeleteAkteClick(Sender: TObject);
var
  idx: integer;
begin
  idx := GetAktenIndex;
  if idx < 0 then
    exit// Bis hier alles OK
  if MessageDlg('Diese Akte wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then // und hier kracht es !
  begin // Hier kommt er nie hin
    A := AktenListe[idx];
    AktenListe.DeleteByID(A.ID);
    AktenListe.Delete(idx);
    dgAkte.RowCount := dgAkte.RowCount - 1;
    if idx >= AktenListe.Count then
      idx := AktenListe.Count - 1;
    dgAkte.Row := dgAkte.FixedRows + idx;
    dgAkte.Invalidate;
  end;
end;     


Beim Debuggen komme ich bis Zeile 133 in messagedialogs.inc, dort ist dann Ende.
Code: Alles auswählen
begin
  Btns := GetPromptUserButtons(Buttons, CancelValue, DefaultIndex, ButtonCount,
    False, mbYes);
  Result := DialogResults[PromptUser(LineBreaksToSystemLineBreaks(aMsg), // hier kommt er nicht mehr raus
    DialogIds[DlgType], Btns, ButtonCount, DefaultIndex, CancelValue)];
  ReallocMem(Btns, 0);
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 776
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.80 / FP 3.3.1 SVN Rev 41791 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon theo » 4. Feb 2019, 12:22 Re: MessageDlg bringt PC zum hängen

Nur unter dem Debugger oder auch ohne? Welche Laz Version?
theo
 
Beiträge: 8153
Registriert: 11. Sep 2006, 18:01

Beitragvon MacWomble » 4. Feb 2019, 13:50 Re: MessageDlg bringt PC zum hängen

Nein, das passiert immer, und nur bei diesem einen Formular.
Ich habe das mit verschiedenen Versionen getestet, sieht so aus als ob da irgendetwas mit dem Formular nicht stimmt. Ich teste das später.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 776
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.80 / FP 3.3.1 SVN Rev 41791 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon MacWomble » 4. Feb 2019, 19:27 Re: MessageDlg bringt PC zum hängen

Nachtrag:

Dass ich mich im tty nicht anmelden kann ist ein anderes Problem :shock: , welches nichts mit Lazarus oder dem hier geschilderten MessageDlg-Problem zu tun hat.
Mit letzterem bin ich nicht weiter gekommen. :evil:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 776
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.80 / FP 3.3.1 SVN Rev 41791 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon MacWomble » 4. Feb 2019, 21:35 Re: MessageDlg bringt PC zum hängen

Ich habe nun wirklich alles versucht um dem Problem auf die Spur zu kommen. :roll:
Der MessageDlg versagt hier den Dienst. Ich habe ihn durch einen QuestionDlg ersetzt, was auch funktioniert. :shock:
Ebenfalls habe ich es erfolgreich mit der PasswordBox zum laufen gebracht. :shock:

Sobald ich aber den MessageDlg verwende, hängt sich das System komplett auf. Verwirrend ist für mich, dass nur eines von vielen Formularen betroffen ist. :evil:
Alle anderen Formulare sind 'baugleich' (Unterschied nur in den Daten) und funktionieren. Ich habe das Formular bereits auch komplett neu erzeugt und habe das selbe Resultat. :(

Eventuell muss ich ja Klicks für den MessageDlg nachkaufen, der scheint in der freien Version nur ein paar pro Anwendung zu unterstützen... :P
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 776
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.80 / FP 3.3.1 SVN Rev 41791 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon kralle » 5. Feb 2019, 07:02 Re: MessageDlg bringt PC zum hängen

Moin,

ich hätte vielleicht noch zwei Idee:

Liegt der Problemdialog in einer eigenen Unit?
Wenn ja, liegt diese wirklich im Projektverzeichnis oder kommt die Ursprünglich aus einem anderen Verzeichnis?

Ich hatte auch schon mal Probleme mit einer Anwendung , die daran lagen, das ich nur glaubte die entsprechende Unit wäre im Projektverzeichnis,
in Wirklichkeit lag die Unit noch in eiem anderen Verzeichnis und da gab es dann unerklärliche Probleme.

Nur noch so ein Gedanke.

Wen Du MessagDlg in mehreren Proceduren nutzt, hast Du den Problem Dialog aus einer anderen kopiert oder neu eingetippt?
Bei letzterem, vielleich anstatt eines einfachen Leerzeichen im Text ein Steuerzeichen erwischt? Mal Steuerzeichen anzeigen lassen?

Gruß HEiko
Linux Mint 19 und Lazarus 2.0(FPC-Version: ?)
Windows 10 Pro Lazarus 1.8.4 + Delphi XE7SP1
kralle
 
Beiträge: 534
Registriert: 17. Mär 2010, 14:50
Wohnort: Bremerhaven
OS, Lazarus, FPC: Linux Mint 18.3 - Lazarus 1.9 - FPC 3.0.4 -Win8.1 & XE7Pro | 
CPU-Target: 64Bit
Nach oben

Beitragvon af0815 » 5. Feb 2019, 08:53 Re: MessageDlg bringt PC zum hängen

MacWomble hat geschrieben:Ich habe nun wirklich alles versucht um dem Problem auf die Spur zu kommen. :roll:
Der MessageDlg versagt hier den Dienst. ...

Die meisten Dialoge werden auf Dialoge aus dem WIdgetset gemapped und verbrauchen Resourcen des Widgetsets. Kann sein, das du da auf eine Anomalie in der Behandlung mit dem Widgetsets gestossen bist. Das mit dem Nichtreagieren des BS deutet auch darauf hin, das es tiefer im System liegt.

Was für ein Widgetset verwendest du ? Wahrscheinschlich Standard (=gtk2 bei Linux).

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3620
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MacWomble » 5. Feb 2019, 09:45 Re: MessageDlg bringt PC zum hängen

Danke für eure Antworten.

- Die Datei liegt im Projektverzeichnis und ist dem Projekt auch hinzugefügt
- Ich habe die Zeile auch nochmal eingetippt - ohne Änderung
- Ich habe besagte Datei komplett neu erstellt - auch keine Wirkung
- Ich habe die Datei aus eine lauffähigen 'Schwester' geclont - ebenfalls wirkungslos
- Steuerzeichen in der Zeile habe ich nicht gefunden
- WidgetSet ist GTK2
- Ich habe den Debugger ziemlich weit in die Sourcen laufen lassen und lande tatsächlich irgendwo in den Tiefen der Widgetbehandlung.

Leider ist es nicht sehr effektiv zu debuggen, wenn man ständig den Rechner neu starten muss.
Im Moment habe ich das Problem beiseite gelegt, da ich mit dem Projekt weiter kommen muss. Glücklicherweise gehen ja alle anderen Dialoge.

Ich habe an der besagten Stelle nun sogar entschieden, dass nur mit Passwort gelöscht werden kann. Da es sich hier um essentiell wichtige Anwalts-Akten mit Dokumenten aus Rechtsstreitigkeiten handelt, ist das so im Moment sogar plausibel.
(Später kommen noch Funktionen zum automatischen archivieren vor dem Löschen hinzu, dann ist eine Rekonstruktion bei Bedarf möglich. Momentan geht das nur über die Datensicherung. )

Generell bin ich aber schon daran interessiert, das Problem zu lösen.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 776
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.80 / FP 3.3.1 SVN Rev 41791 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon theo » 5. Feb 2019, 10:33 Re: MessageDlg bringt PC zum hängen

Ich sehe das ähnlich wie af0815.
Wenn du das System, bzw. den X-Server zum abnippeln bringst, dann denke ich, dass mindestens GTK da "mitspielt".
Es ist deshalb möglich, dass das Problem in der GTK Version liegt und nicht unbedingt direkt bei Lazarus.

Aber das sind nur Vermutungen. Nichts Genaues weiß man nicht.
theo
 
Beiträge: 8153
Registriert: 11. Sep 2006, 18:01

Beitragvon MacWomble » 5. Feb 2019, 11:16 Re: MessageDlg bringt PC zum hängen

@theo
Ich sehe das ja im Prinzip auch so, aber warum tritt das nur in einer der 'baugleichen' Forms auf und nicht bei den anderen?
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 776
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.80 / FP 3.3.1 SVN Rev 41791 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon wp_xyz » 5. Feb 2019, 11:45 Re: MessageDlg bringt PC zum hängen

Ich tippe eher auf einen Fehler in deinem Programm, der sich halt so auswirkt. Gerade bei Pointer-Listen mit den vielen Type-Casts trägt man vielleicht doch mal den falschen Typ ein, und danach ist praktisch alles möglich.
wp_xyz
 
Beiträge: 2865
Registriert: 8. Apr 2011, 08:01

Beitragvon Michl » 5. Feb 2019, 11:48 Re: MessageDlg bringt PC zum hängen

Das Problem kann man am besten lösen, indem man es isoliert. Erstelle eine Kopie von deiner Anwendung und reduziere diese soweit, bis nur noch das Formular mit dem MessageDialog übrig ist. Entweder es erklärt sich bis dahin, was das Problem war oder du hast ein Formular das du hier zum testen posten kannst.
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2320
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon fliegermichl » 5. Feb 2019, 12:18 Re: MessageDlg bringt PC zum hängen

Stelle auch alle möglichen Compiler Prüfungen ein und ignoriere Compilerwarnungen nicht.
fliegermichl
 
Beiträge: 289
Registriert: 9. Jun 2011, 08:42

Beitragvon Timm Thaler » 5. Feb 2019, 16:01 Re: MessageDlg bringt PC zum hängen

Andererseits: Die Message Dialogs sind so häßlich, die baut man doch am besten gleich selbst. 8)
Timm Thaler
 
Beiträge: 874
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon af0815 » 5. Feb 2019, 19:12 Re: MessageDlg bringt PC zum hängen

Timm Thaler hat geschrieben:Andererseits: Die Message Dialogs sind so häßlich, die baut man doch am besten gleich selbst. 8)

Da kann ich mich anschließen, noch dazu wenn ich da die Möglichkeit habe, einige Eigenschaften selbst zu optimieren. Btw. In tiOpf sind da ekn paar gute Vorschläge drinnen, wie man sowas handhaben kann.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3620
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 2 Gäste

porpoises-institution
accuracy-worried