AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TLabel - für mich unerklärliche Exception

Ein Thema von mani64 · begonnen am 21. Apr 2009 · letzter Beitrag vom 24. Apr 2009
Antwort Antwort
Seite 1 von 3  1 23      
mani64

Registriert seit: 8. Apr 2009
49 Beiträge
 
Delphi 5 Professional
 
#1

TLabel - für mich unerklärliche Exception

  Alt 21. Apr 2009, 18:47
Hallo,

wer kann mir folgendes erklären:
Ich habe in einer MDI-Anwendung ein Formular, ein "About"-Fenster, das beim Start kreiert wird und dann per Menü-Button aufgerufen werden kann (siehe bei Delphi Datei - Neu - Projekte - MDI-Anwendung!).
Auf dem Formular sind 3 TLabel und ein Image.
Bei dem einen Label ist die Textgröße Font.Size auf 8 eingestellt, die Werte von Font.Height und Height sind -11 und 13.
So funktioniert die Sache wunderbar.

Ändere ich jetzt Font.Size ab, dann passen sich im Objektinspektor auch Font.Height und Height an, z.B. Font.Size=16, Font.Height=-21 und Height=24. Aber nun erzeugt das Programm beim Verlassen eine Exception EAccessViolation in Modul Projekt1.exe... Zugriffsverletzung ... Schreiben von Adresse ....
Rufe ich jedoch bevor ich das Programm schließe das About-Formular auf, kommt die Meldung nicht.
Die Meldung kommt auch nur, wenn ich zuvor in ein Kindfenster eine bereits vorhandene Datei lade.
Stelle ich für Label die ursprünglichen Werte ein, dann wird das Programm aber auch normal beendet, auch wenn ich das About-Formular nicht erscheinen lasse und eine Datei geöffnet hatte.
Die Meldung erscheint auch nicht (bei veränderten Werten des Labels), wenn ich zuerst das Kind-Fenster schließe und danach dann das Programm beende.

Welche Erklärung gibt es für dieses Phänomen??

Ich habe jetzt gerade noch einmal die von Delphi zur Verfügung gestellte Grundform von MDI-Applikation getestet. Dort hat das Verändern von Font.Size keine Exception zur Folge. Ist doch aber komisch, dass es in meiner Anwendung mit Font.Size 8 keine Exception gibt, mit jeder anderen Größe aber schon - jedoch wenn ich das Formular einmal aufgerufen habe, dann wieder keine.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: TLabel - für mich unerklärliche Exception

  Alt 21. Apr 2009, 21:41
Zitat von mani64:
Welche Erklärung gibt es für dieses Phänomen??
Speicherüberschreibung. Irgendwo überschreibt oder verwendest du Speicher der nicht dir gehört. Und durch das Ändern der Font.Size ändert sich die Speicherbelegung so, dass es zufälligerweise nicht zu einer Schutzverletzung kommt.
  Mit Zitat antworten Zitat
mani64

Registriert seit: 8. Apr 2009
49 Beiträge
 
Delphi 5 Professional
 
#3

Re: TLabel - für mich unerklärliche Exception

  Alt 21. Apr 2009, 22:16
Danke für den Hinweis.

So etwa hatte ich auch vermutet, aber solch ein Fehler ist manchmal schwer zu finden. Anscheinend lässt sich bei TRichedit MaxLength nicht direkt setzen, sondern nur mit einem Aufruf SendMessage(handle,EM_EXLIMITTEXT, 0, value) - ich hatte den Wert einfach mit Richedit.Maxlength:=value zugewiesen. Jedenfalls geht es nach dieser Korrektur ohne Fehlermeldung.
Seltsamerweise muss ich vor dem Einlesen der Datei die Größe von Maxlength ändern, ganz entgegen dessen, was in der Delphi-Hilfe steht, nämlich dass bei dem Vorgabewert 0 die Textgröße nur durch das Betriebssystem begrenzt sei. Jedenfalls liest das Betriebssystem einen RTF-Text nur bis zu einer bestimmten Größe ein und bricht ab, falls der Text länger ist, und liest ihn dann als normalen Text ein. Wenn ich dagegen Maxlength auf den Wert setze, den Delphi (blöderweise) erst nach dem Einlesen der Datei selbst setzt ($7FFFFFF0), dann wird die Datei richtig eingelesen, auch wenn sie etwas größer ist.

Edit:
Nein, das war es wohl noch nicht. Jedenfalls klappt es im Augenblick wieder nicht mehr ohne Fehlermeldung.
Keine Ahnung, wo ich da in einen flaschen Speicherbereich schreibe...


Edit2:
Mann, wie einfach doch manchmal die Dinge sind! Aus irgendeinem Grund habe ich versehentlich auf dem 1. Formular eine Popup-Neuü-Komponente plaziert, die da gar nicht hin gehört. Komponente gelöscht und schon funktioniert es wieder
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TLabel - für mich unerklärliche Exception

  Alt 22. Apr 2009, 04:49
Zitat von mani64:
Komponente gelöscht und schon funktioniert es wieder
Damit hast du deinen Fehler aber noch nicht gefunden sondern nur das Speicherlayout geändert.
Es ist mehr oder weniger Zufall, dass jetzt die Zugriffsverletzung ausbleibt.
  Mit Zitat antworten Zitat
mani64

Registriert seit: 8. Apr 2009
49 Beiträge
 
Delphi 5 Professional
 
#5

Re: TLabel - für mich unerklärliche Exception

  Alt 22. Apr 2009, 05:58
Gibt es irgendwie einen Weg, diesen Fehler aufzuspüren?
  Mit Zitat antworten Zitat
Poelser

Registriert seit: 21. Apr 2008
Ort: Europa
145 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: TLabel - für mich unerklärliche Exception

  Alt 22. Apr 2009, 07:11
Zitat von mani64:
Gibt es irgendwie einen Weg, diesen Fehler aufzuspüren?
Projekt (komplett) erzeugen mit allen Einstellungen für Laufzeitfehler:

- Bereichsüberprüfung
- I/O-Prüfung
- Überlaufprüfung

Vielleicht hast du dann Glück, dass du dann schon eine Exception á la "Fehler bei der Bereichsprüfung" bekommst. Man sollte zur Entwicklungszeit immer mit diesen Schaltern compilieren.

CU, der Poelser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: TLabel - für mich unerklärliche Exception

  Alt 22. Apr 2009, 07:15
Man könnte noch die madexcept Komponenten von Madshi nutzen. Oder sich einfach mal den Code im CPU-Fenster angucken und zurückverfolgen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mani64

Registriert seit: 8. Apr 2009
49 Beiträge
 
Delphi 5 Professional
 
#8

Re: TLabel - für mich unerklärliche Exception

  Alt 22. Apr 2009, 13:02
Ich weiss mir keinen Rat mehr

Bitte schaut euch mal mein Projekt an, vielleicht könnt ihr einen Fehler entdecken. Es ist noch nicht ganz fertig. Das Formular von Unit3 ist noch nicht vollständig integriert. Es wird ein Dialogformular, mit dem Änderungen in der Unit converter durchgeführt werden sollen. Wenn ich Form3 nicht automatisch erstellen lasse, wird das Programm ohne Exception beendet. Vielleicht liegt ja da irgendwo ein Fehler. Keine Ahnung, ob ich Unit3 erst fertig programmieren muss; ich denke, es sollte auch beim jetzigen Stand funktionieren.

Bitte einmal testen: Programm starten, die Datei log06689 2.txt laden und danach das Programm beenden (entweder im MainForm auf das x rechts oben klicken oder mit Datei-beenden).

Bin für jeden Rat dankbar
Angehängte Dateien
Dateityp: zip fuer_delphipraxis_937.zip (289,6 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: TLabel - für mich unerklärliche Exception

  Alt 22. Apr 2009, 14:28
Hallo,

ich habe das PRogramm noch nicht selbst compilliert aber wenn ich es starte, die Datei lade und dann beende dann stürtzt nichts ab! - Keine Exception, keine Fehlermeldung.

Ist das jetzt gut? (getestet auf einem Vista Ult.)

Ciao,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat
mani64

Registriert seit: 8. Apr 2009
49 Beiträge
 
Delphi 5 Professional
 
#10

Re: TLabel - für mich unerklärliche Exception

  Alt 22. Apr 2009, 14:58
Toll für dich!

Bei mir stürzt es leider ab; ich arbeite mit Windows XP. Ich lade mal noch die EXE-Datei hoch.

Aber vielen Dank für dein Bemühen.


Ich habe versucht, die Stelle zu finden, bei der die Exception geschieht. Anscheinend passiert es bei der Freigabe des Menüs. Ich habe aber keine Ahnung warum.
Angehängte Dateien
Dateityp: exe project1_906.exe (517,5 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 22:46 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