AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit if-Befehl

Ein Thema von ByTheTime · begonnen am 4. Aug 2012 · letzter Beitrag vom 6. Aug 2012
Antwort Antwort
Benutzerbild von sx2008
sx2008

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

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 00:03
Und das Selbe was hier ein Assert macht, kann man auch selber machen ... man muß nur mal den Debugger benutzen.
Das sehe ich etwas anderst.
Asserts werden einmal hingeschrieben und halten Wache solange der Code benützt wird.
Breakpoints und Watches im Debugger sind dagegen eine mehr oder weniger einmalige Geschichte.

Asserts sind ein extrem nützliches Werkzeug; vorallem dann wenn die Codebasis sehr gross ist.
Wenn der Benutzer eine Zugriffsverletzung meldet, dann weiss der Entwickler nur dass irgendwo in dem Programm wahrscheinlich ein nil-Zeiger dereferenziert wurde.
Eine Assert-Exception meldet dagegen die Unit, die Zeilennummer und ggf. noch einen Hinweis:
Delphi-Quellcode:
// Assert mit zusätzl. Meldungstext
Assert(Assigned(QueueManager), 'QueueManager nicht initialisiert');
Bei hunderten von Units macht das einen riesigen Unterschied zu wissen wo man das Problem zu suchen hat.

Bevor man defekten Code zum Laufen bringt muss man wissen wo der Fehler liegt.
Dazu leisten Asserts einen guten Beitrag.
Wenn man den Fehler dann gefunden und behoben hat möchte man präventiv verhindern, dass der Fehler in ähnlicher Weise wieder auftritt.
Auch hier helfen Asserts.
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#2

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 00:23
Mit dem Assert bekomme ich nun einen EReadError mit dem Hinweis, das die Assertion fehlgeschlagen ist.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#3

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 00:59
Mit dem Assert bekomme ich nun einen EReadError mit dem Hinweis, das die Assertion fehlgeschlagen ist.
Mit welchem Assert? Im Beispiel von sx2008 stehen mehrere.

MfG Dalai
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 01:04
@ByTheTime:
Womit das Problem eigentlich aufgeklärt seim müsste: ComboDis ist nil (nicht initialisiert).
Darum ist das Assert da.
Es prüft, ob eine Bedingung erfüllt ist und löst ansonsten eine Exception aus.
Ideal an solchen Stellen, an denen man gewisse Dinge voraussetzt, z.B. dass eine Variable > 0 ist oder ein Objekt initialisiert ist.

PS: ich ging davon aus dass es ComboDis ist.
Delphi programming
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 10:45
Senf:
Asserts sind dazu da, Programmier(er)fehler zu finden. Im Produktivcode existieren die Asserts ja nicht mehr.

Es ist wichtig, die Fehlermeldung zu verstehen: Wenn dort irgendwas mit Adressen in der Nähe von 0x000000** steht, handelt es sich eigentlich immer um ein Nil-Pointer Problem.
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#6

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 12:45
OKay, aber warum ist dann ComboDis nicht initalisiert. Also das ganze steht im OnChange-Event des ComboDis. Und wenn man hier 'Variante 1' auswählt erscheint ein Panel.

Delphi-Quellcode:

if ComboDis.Text = 'Variante 1then
   CalloutPower.Visible := true; //Simikolon noch dahinter
 //else
   //CalloutPower.Visible := false;
Wenn ich es so mache geht es ja, und ich kann mir nciht erklären, was jetzt die dazukommenden 2 Zeilen hervorrufen/ändern.
Lukas

Geändert von ByTheTime ( 5. Aug 2012 um 13:43 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 12:58
Versuch mal

Delphi-Quellcode:
if (Sender as TComboBox).Text = 'Variante 1then
    CalloutPower.Visible := true; //Semikolon noch dahinter
else
  CalloutPower.Visible := false;
Markus Kinzler
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#8

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 13:46
Nein, immer noch das selbe Hier ist mal ein Bild imAnhang, was passiert, wenn ich ohne Debbuger compiliere.

Aber ich Überlege mir das ganze einfach zu lassen mit dem Text im ComboEdit... Damit habe ich nur Probleme und muss für jedes ComboEdit im OnClick-Event ComboEdit.SelectAll; und im OnExit
Delphi-Quellcode:
if ComboEdit.Text = 'then
   ComboEdit.Text := 'Beschriftung'
Da kann ich einfach auch alles mit Labels machen. Ich finde zwar somit sieht es schöne aus, aber ich ahbe nur Probleme und muss immer so Kleinigkeiten in den ganzen Events coden.
Angehängte Grafiken
Dateityp: jpg FreeScreenVideoRecorderImage.jpg (14,0 KB, 18x aufgerufen)
Lukas

Geändert von ByTheTime ( 5. Aug 2012 um 13:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 14:48
Da die gezeigte Codestelle definitiv keinen Fehler behinhaltet und wir nicht wissen was sonst noch für Code vorhanden ist, kann hier auch keiner Helfen.

- entweder du zeigst mehr
- oder du stellst eine Demoanwendung zur Verfügung, welche den Fehler reproduzierbar zeigt
- oder du kümmerst dich endlich mal selber um das Problem (*)

*)
- Hast du denn nun schonmal geschaut, ob alle beteiligten Variablen i.O. sind? (Self und ComboEdit nicht nil)

- Programm mit DebugDCUs kompilieren
- schauen wo es nun knallt
- und falls nötig, dann Haltepunkt auf den Aufruf und manuell Stück für Stück vorarbeiten, bis die Problemstelle gefunden wurde.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Problem mit if-Befehl

  Alt 5. Aug 2012, 14:54
Hallo
Deine comboboxen heißen unterschiedlich!
Kann es sein dass du die einmal in der
Pas-Datei direkt geändert hast.
Dann stimmt der Name in der DFM-Datei
und in der Pas-Datei nicht überein
Schau dir deine DFM-Datei
mal im Notepad an.


Heiko
Heiko
  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 22:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz