AGB  ·  Datenschutz  ·  Impressum  







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

Nicht initialisiert - wieso?

Ein Thema von easywk · begonnen am 13. Jan 2005 · letzter Beitrag vom 13. Jan 2005
Antwort Antwort
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#1

Nicht initialisiert - wieso?

  Alt 13. Jan 2005, 14:27
Moin, moin,

in der Regel hat Delphi mit seinen Warnungen über "Variable ist möglicherweise nicht initialisiert worden" ja Recht und ich suche da auch immer hinterher. Ist mir schon mehrmals passiert, dass es dann unter ganz bestimmten Umständen wirklich so war und dann natürlcih Müll rausgekommen ist. In dem nachfolgenden Fall verstehe ich die Warnung aber nicht:
Delphi-Quellcode:
try
  GebDatum:=StrToDate(Trim(Sheet.Cells[row,11].Text));
except
  on EConvertError do continue;
  else GebDatum:=0;
end;
DecodeDate(GebDatum,y,m,d);
Gemeckert wird beim dem DecodeDate. Schreibe ich vor die try-Anweisung jetzt aber ein GebDatum:=0; dann meckert er, dass diese Zuweisung niemals verwendet wird.

Kann mir das jemand erklären?
cu easywk
Björn
if all else fails - read the instructions
  Mit Zitat antworten Zitat
Benutzerbild von BluesKid
BluesKid

Registriert seit: 2. Sep 2003
Ort: NRW
133 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Nicht initialisiert - wieso?

  Alt 13. Jan 2005, 14:32
Moin

wenn du vor dem try der Variable nen Wert zuweist, und danach drekt wieder, dann hat die Zuweisung keinerlei Sinn.

Du machst ja nichts mit dem Wert, auser ihn 2 zeilen Später wieder zu überscheiben bzw. wenn das schief geht im except Teil.

Ergo wir die erste Zuweisung nie nicht für gar nie nix benötigt



schönen Gruß
Sam

[edit]öhm, Problem missverstanden, Thema verfehlt..sorry [/edit]
A clear conscience is usually the sign of a bad memory.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Nicht initialisiert - wieso?

  Alt 13. Jan 2005, 14:34
Das liegt am try. Sollte StrToDate fehlschlagen, gibt die Funktion keinen Wert zurück, sondern springt automatisch in den except-Block Deine Variable ist nicht initialisiert worden. Und da auch nicht notwendigerweise eine zum Exceptiontyp passende Exception auftreten wird, kann es sein, das GebDatum auch im except-Block keinen Wert verpasst bekommt. Am besten vor den Try-Block GebtDatum := 0; hinschreiben, dann meckert der Compiler auch nicht mehr
  Mit Zitat antworten Zitat
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Nicht initialisiert - wieso?

  Alt 13. Jan 2005, 14:34
Na, dass eine Zuweisung vor dem try sinnlos ist, ist mir schon klar.
Nur, warum soll sie jetzt in der Decode-Zeile nicht initialisert sein. Das verstehe ich nicht.
Björn
if all else fails - read the instructions
  Mit Zitat antworten Zitat
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Nicht initialisiert - wieso?

  Alt 13. Jan 2005, 14:36
@Dax: doch tut er: dann mault er, dass diese Zuweisung niemals benutzt wird. Außerdem kommt er auf das Decode nicht ohne initialisierung. bei On EConvertError springe ich aus der Schleife raus, in allen anderen Exceptions weise ich Null zu ....
Björn
if all else fails - read the instructions
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Nicht initialisiert - wieso?

  Alt 13. Jan 2005, 14:43
Wenn ich das so tue, meckert mein D6-Compiler aber nicht
Delphi-Quellcode:
GebDatum := 0;
try
  GebDatum:=StrToDate(Trim(Sheet.Cells[row,11].Text));
except
  on EConvertError do continue;
  else GebDatum:=0;
end;
DecodeDate(GebDatum,y,m,d);
  Mit Zitat antworten Zitat
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Nicht initialisiert - wieso?

  Alt 13. Jan 2005, 15:19
Delphi 7 Enterprise meckert aber:
"Der auf GebDatum zugewiesene Wert wird niemals benutzt"

Ich meine, wenn er das erkennt, dann müsste er auch merken, dass im anderen Fall die Variable intialisiert ist. Diese beiden Warnungen wiedersprechen sich einfach. Das ist es ja, was mich besonders stutzig macht
Björn
if all else fails - read the instructions
  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 23:14 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