AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Einfaches OnMouseMove schießt Programm/Debugger ab
Thema durchsuchen
Ansicht
Themen-Optionen

Einfaches OnMouseMove schießt Programm/Debugger ab

Ein Thema von Bbommel · begonnen am 30. Mär 2010 · letzter Beitrag vom 15. Dez 2011
 
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#1

Einfaches OnMouseMove schießt Programm/Debugger ab

  Alt 30. Mär 2010, 11:35
Hallo zusammen,

ich habe ein ziemlich merkwürdiges Phänomen, das ich mittlerweile schon fast für einen Bug in Delphi halten würde. Vielleicht kann ja mal der ein oder andere versuchen, das bei sich nachzustellen, um das Problem zu bestätigen. Vielleicht hat aber ja auch jemand eine Erklärung und alles ist viel einfacher als gedacht.

Hintergrund: In einem etwas komplexeren Projekt kam es plötzlich mitten in der Arbeit zu einem spontanen Programmabsturz, der so fies war, dass noch nicht mal der Debugger angesprungen ist, sondern sofort Windows verkündete "Dieses Programm funktioniert nicht mehr...". Zuerst dachte ich, ich hätte mir selbst irgendeine Falle gestellt, irgendwo den Speicher zerschossen, was weiß ich. Das übliche eben.

Mittlerweile konnte ich das Verhalten allerdings mit folgendem Allereinfachst-Projekt nachstellen, wo nun wirklich nichts mehr drin sein sollte, das den Speicher zerschießt. Es handelt sich hierbei nur um ein ganz einfaches Form mit einem Button und einem MouseMove-Ereignis:

Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type

  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    function myDummyFunction: boolean;
  private
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  opendialog1.Execute;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  myDummyFunction;
end;

function TForm1.myDummyFunction: boolean;
begin
  Result:=false;
end;

end.
Sieht doch soweit erstmal einfach aus, oder? Nun muss man das Programm einfach nur starten, dann einmal auf den Button klicken, dann den Öffnen-Dialog wieder schließen und dann einfach den Mauszeiger über der Form belassen (nicht über dem Button) und eine Minute warten. Nach etwa einer Minute nämlich werden offenbar einige Bibliotheken entladen, die für den Öffnen-Dialog nötig werden. Bei diesem Entladen schmiert das Programm ab, wie oben beschrieben. Es gibt also keine Fehlermeldung, nur Windows, das einem sagt, dass es das Programm beenden muss. Meistens wird das Programm beendet und man kann mit Delphi weiterarbeiten, manchmal schmiert dann Delphi gleich mit ab.

Kein Problem tritt auf, wenn man das Programm ohne Delphi bzw. Debugger startet. Wenn es wie oben schon mal abgeschmiert ist und man es dann noch mal startet, dann läuft es manchmal auch durch, aber nicht immer. Wenn man es aber direkt aus einem sauberen Delphi startet, dann lässt sich das obige immer nachvollziehen.

System: D2009 Prof., Win7 Prof. 32Bit.

Ich wäre für Rückmeldungen sehr dankbar, wie das bei euch aussieht.

Als kleinen Service gibt es noch das Test-Projekt als Anhang.

Bis denn
Bommel

edit: Anhang korrigiert, siehe Post #4.
Angehängte Dateien
Dateityp: zip movetest_145.zip (5,0 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
 


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 11:16 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