Einzelnen Beitrag anzeigen

enigma

Registriert seit: 15. Jun 2008
47 Beiträge
 
#1

Exe (mit Delphi 2010 erzeugt) klappt auf Win XP, nicht auf Win 7, Win 8

  Alt 19. Dez 2013, 14:47
Hallo an alle,

ich habe ein für mich kurioses Problem mit einer .exe: Eine mit Delphi 2010 auf Win XP erzeugte .exe (VLS.exe)
funktioniert, wenn ich sie auf Win XP ausführe, jedoch nicht, wenn ich sie auf Win 7 oder Win 8 (beide 64 Bit) ausführe.

Das Problem tritt beim PaintBox1Paint-Ereignis auf:
Ich erzeuge im VLS-Programm MDIChildren, deren Klasse (Unterklasse von TForm) eine PaintBox als Komponente enthält.
Auf PaintBox1.Canvas wird im Ereignis PaintBox1Paint meine procedure DrawPages zum Darstellen des Inhalts (z.B. mit TextOut) ausgeführt.

Wenn ich mit der Delphi 2010-IDE den Programmablauf auf Win XP und Win 7 verfolge, treten Unterschiede auf:
Unter Win XP wird stets nur Paint auf dem PaintBox.Canvas des zuletzt erzeugten MDIChild ausgeführt.

Unter Win 7 tritt PaintBox1Paint zuerst mit dem zuvor erzeugten (also dem gerade aktuellen) MDIChild auf,
dann mit dem neu erzeugten - das alte und das neue MDIChild wechseln sich dann ab.
Der Fehler liegt darin, dass beim Paint des zuvor erzeugten MDIChild eine Berechnung ausgeführt wird, die zu einem Fehler führt.
Vorher wurde die Berechnung schon mal ohne Fehler ausgeführt - diesen Fehler habe ich noch nicht bis zu einem Ergebnis gelöst.

Aber was mich wundert ist:

- der unterschiedliche Programmablauf unter Win XP und Win 7
- warum tritt dieser Fehler beim Verwenden der VLS.exe unter Win 7 auf,
die unter Win XP erzeugt wurde und dort auch funktioniert.

Vielen Dank für jeden Hinweis!
  Mit Zitat antworten Zitat