AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Fehlermeldung wenn keine Showmessage?
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung wenn keine Showmessage?

Ein Thema von loirad · begonnen am 24. Jun 2012 · letzter Beitrag vom 25. Jun 2012
Antwort Antwort
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#1

Fehlermeldung wenn keine Showmessage?

  Alt 24. Jun 2012, 20:06
Hallo liebe Community,

ich habe (mal wieder) ein Problem. Ich arbeite an einem Kalender, in den man Termine eintragen kann. Soweit so schön. Jedoch erhalte ich eine Fehlermeldung (siehe Anhang). Diese Fehlermeldung tritt in folgendem Abschnitt auf:
Delphi-Quellcode:
if (length(VonDatum.Text)>=8) and (length(VonZeit.Text)>=3) and
    (Beschreibung.Text<>'') and (((Geburtstag.Checked=true) and
    (length(Geburtsjahr.Text)=4)) or (Geburtstag.Checked=false)) then
  begin
   Form3.Hide;
   vDatum:=VonDatum.Text;
   bDatum:=BisDatum.Text;
   vZeit:=VonZeit.Text;
   bZeit:=BisZeit.Text;
   //showmessage('');
   setlength(Form1.Termine,length(Form1.Termine)+1);
   with Form1.Termine[length(Form1.Termine)] do
    begin
     VonTag:=T(vDatum);
     VonMonat:=M(vDatum);
     VonJahr:=J(vDatum);
     if bDatum<>'then
      begin
       BisTag:=T(bDatum);
       BisMonat:=M(bDatum);
       BisJahr:=J(bDatum);
      end;
     Wiederholung:=Form3.Wiederholung.ItemIndex;
     Beschreibung:=Form3.Beschreibung.Text;
    end;
   Beschreibung.Clear;
   BisDatum.Clear;
   BisZeit.Clear;
   Geburtsjahr.Text:='Geburtsjahr';
   Geburtsjahr.Font.Color:=clGray;
   Geburtstag.Checked:=false;
   VonDatum.Clear;
   VonZeit.Clear;
   Wiederholung.ItemIndex:=-1;
   Form1.Show;
  end
 else
  showmessage('Fehler! Bitte alle Felder korrekt ausfüllen!');
Das Kuriose daran: Der Fahler tritt nur auf, wenn ich die showmessage rausnehme!

Woran liegt das? Kann mir da jemand helfen? Application.ProcessMessages oder sleep hilft nichts.

Liebe Grüße
loirad

PS.: Anbei das Projekt für besseres Verständnis.
Angehängte Grafiken
Dateityp: jpg 2012-06-24_205755.jpg (6,2 KB, 31x aufgerufen)
Angehängte Dateien
Dateityp: zip Kalender.zip (282,3 KB, 8x aufgerufen)
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.961 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fehlermeldung wenn keine Showmessage?

  Alt 24. Jun 2012, 21:02
Das kann ich weder mit aktuellen Delphiversionen noch mit Delphi 7 nachvollziehen. Was genau machst du im Programm, damit der Fehler passiert?

Und am besten häng die Exe, bei der der Fehler passiert, auch an (wenn ich das richtig verstehe, muss ja das ShowMessage raus, das in deinem Anhang noch drin ist).

Zudem kannst du FastMM4 im FullDebugMode einbinden. Dann siehst du vielleicht wo der Fehler auftritt.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Fehlermeldung wenn keine Showmessage?

  Alt 24. Jun 2012, 21:23
Zitat:
Diese Fehlermeldung tritt in folgendem Abschnitt auf:
Und wo tritt nun der Fehler auf?
Welche Codezeile?


[add]
Tipp: Geh in die Projektoptionen und aktiviere die Bereichprüfung.
Du hast dir einen Pufferüberlauf (Buffer Overrun) gebaut.

Oder im Quellcode.
{$R+} aka {$RANGECHECKS ON} (alt / neu)

und eventuell auch mal die {$Q+} aka {$OVERFLOWCHECKS ON}



Zitat:
Form1.Termine[length(Form1.Termine)]
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (24. Jun 2012 um 21:43 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Fehlermeldung wenn keine Showmessage?

  Alt 24. Jun 2012, 22:30
Gibt es davor evtl. eine if-else abfrage?
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Fehlermeldung wenn keine Showmessage?

  Alt 24. Jun 2012, 23:22
Die Tage brauchst du nicht freizugeben, das übernimmt Kalender. Wenn ich das richtig sehe, gehört das setlength(Termine, 0) nur nach TForm1.FormDestroy. So ist es bei mir durchgelaufen. Deinen Fehler konnte ich nicht reproduzieren, weil er immer sagt, es seien nicht alle Felder ausgefüllt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Fehlermeldung wenn keine Showmessage?

  Alt 25. Jun 2012, 01:22
[Hinweis]
Einen Buffer-Overrun bemerkt man nicht immer sofort, es kommt immer darauf an ob zufällig Speicher an der Stelle vorhanden ist und ob und mit was er sonst noch belegt ist also ob/was dort überschrieben wird.
Drum bemerkt auch nicht jeder sofort den Fehler .... außer man schaltet entsprechende Prüfcodes ein, bzw. baut selber ordentliche Prüfungen ein.




Das mit dem nicht richtig ausgefüllt ...

Die GUI ist schon sehr unintuitiv, da wäre es besser gewesen du hättest alles einzeln geprüft und dem Benutzer ordentliche/aussagefähige Fehlermeldungen rausgegeben.
Man kann mit Delphi-Referenz durchsuchenTComponent.SetFocus oder Delphi-Referenz durchsuchenTForm.ActiveControl auch noch die erste Fehlerstelle angeben, bzw rote Fehlermarkierungen kommen auch immer gut an.
Da ich bei Geburtstag das Alter eintragen wollte, denn wenn schon was drin steht, sieht man deinen "Hinweis" nicht mehr, bin ich erst beim Debuggen, also dem Prüfen was dein IF von mir will, auf die 4-Stellingkeit gekommen.

Tipp: Es gibt einen TDateTimePicker, welchen man Datums- und Zeitangaben verwenden kann.
Ein Therapeut entspricht 1024 Gigapeut.
  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 14:30 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