Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: IDE: Compiler Einstellung für nicht initialisierte Variablen

  Alt 10. Sep 2021, 10:43
Erstmal sollte dir der Compiler schon länger eine Fehlermeldung geben, dass Variablen nicht initialisiert seien. (die zwei, welche vorher nicht auf NIL gesetzt wurden)
Somit ist ihr Wert per se zufällig, jenachdem was grade auf dem Stack vorher dort rumlag.

Aber auch NIL hilft nicht viel, da du ja auf Eigenschaften der Objekt-Instanz zugreifen willst.

Und dank dem EXIT können da unten somit alle Variablen sowohl einen Wert, NIL oder "sonstwas" drin haben. (man sieht nicht alles an Code, aber NIL ist vielleicht abgefangen, also somit eigentlich garnicht nötig)


Es ginge auch so:
Oben auf ALLES auf NIL setzen
und Unten darauf prüfen
Oder besser einfach direkt in der Funktion.
Und das Exit-gehopse auch weg.

Hier würde auch was angezeigt, wenn nur ein Edit nicht gefunden wurde.
Delphi-Quellcode:
strCheck := GetGeoCheckAdressString(txtLand, txtPLZ, txtOrt, txtStrasse);

...

function GetGeoCheckAdressString(vtxtLand, vtxtPLZ, vtxtOrt, vtxtStrasse: TEdit): String;
begin
  Result := '';
  if Assigned(vtxtLand) then Result := Result + vtxtLand.Text; // wirklich ohne sowas wie z.B. ein ' ' dazwischen?
  if Assigned(vtxtPLZ) then Result := Result + vtxtPLZ.Text;
  if Assigned(vtxtOrt) then Result := Result + vtxtOrt.Text;
  if Assigned(vtxtStrasse) then Result := Result + vtxtStrasse.Text;
  Result := strSimple(Result);
end;
Nja, ohne das sinnlose Try-Except wird die Behandlung auch gleich viel Einfacher.
* entweder oben :=nil oder unten mit Exit raus -> Beides ist eigentlich nicht nötig, da entweder zugewiesen oder raus



PS:

Statt Pos<>0 ist Delphi-Referenz durchsuchenContainsStr (Delphi-Referenz durchsuchenContainsText) besser lesbar/verstehbar.
Steht "LAND" wirdklich irgendwo im String, oder meinst nicht eher sowas wie Delphi-Referenz durchsuchenStartsStr oder EndsStr? (bzw. StartsText oder EndsText)

Außerdem ist ShowMessage als "Fehlermeldung" nicht nur grauenhaft anzusehn,
sondern auch später extrem unproduktiv, wenn man mal ein richtiges Error-Management nuzten wöllte.
> Hier am Einfachsten diesen Try-Except-"Mist" weglassen.
$2B or not $2B

Geändert von himitsu (10. Sep 2021 um 10:56 Uhr)
  Mit Zitat antworten Zitat