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
ContainsStr (
ContainsText) besser lesbar/verstehbar.
Steht "LAND" wirdklich irgendwo im String, oder meinst nicht eher sowas wie
StartsStr 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.