![]() |
Delphi-Version: 10.3 Rio
Variable Möglicherweise nicht Deklariert...
Hallo zusammen,
wie bekomme ich bei folgendem Quelltext die Warnungen unten ausgeblendet:
Delphi-Quellcode:
Der Grund für die Warnung erscheint mir Logisch, da für Delphi ja nicht Sichergestellt ist, das die Variable Wirklich Initialisiert ist, von der Logik her jedoch schon, da der Modultyp währenddessen nicht verändert wird.
Case KomUnit.ModulTyp of
1: Begin; usb := tUSB_Kom.Create; error := usb.connect; End; 2: Begin; Fox := tFox_kom.Create; Error := Fox.connect; end; end; // ... Mache was mit dem gewählten Modul // gebe nun das gewählte Modul wieder frei: case KomUnit.ModulTyp of 1: begin; usb.disconnect; // < W1036 Variable 'USB' ist möglicherweise nicht initialisiert worden usb.Free; end; 2: begin; Fox.disconnect; // < W1036 Variable 'fox' ist möglicherweise nicht initialisiert worden fox.Free; end; end; Bekomme ich die Warnung irgendwie weg? Danke und Gruß Torsten. |
AW: Variable Möglicherweise nicht Deklariert...
Ein
Delphi-Quellcode:
vor das erste
usb := nil
Delphi-Quellcode:
.
case
|
AW: Variable Möglicherweise nicht Deklariert...
Zitat:
Vielen Dank. |
AW: Variable Möglicherweise nicht Deklariert...
Bei mir gibts da immer(!) ein else mit einem raise einer Exception. Das sollte auch helfen (ungetestet)
|
AW: Variable Möglicherweise nicht Deklariert...
ja, ein Else stellt den abweichenden Pfad bereit
und das Raise unterbricht diesen Pfad, womit Nachfolgendes nicht mehr geprüft wird. (aber nur direkt Raise, nicht in einer Funktion verpackt) |
AW: Variable Möglicherweise nicht Deklariert...
Zitat:
// ... Mache was mit dem gewählten Modul in eine Procecedure auslagern und dann die beiden Case-Statements zusammenfassen, so dass man dort jeweils nur das im Case-Zweig erzeugte Objekt freigibt.
Delphi-Quellcode:
Das setzt natürlich voraus, dass Typ1 und Typ2 einen gemeinsamen Vorfahren haben.
case ... of
bla: begin Var1 := Typ1.Create; try MachWasMit(Var1); finally Var1.Disconnect; Var2.Free; end; end; blub: begin Var2 := Typ2.Create; try MachWasMit(Var2); finally Var2.Disconnect; Var2.Free; end; end; end; Wobei, wenn das der Fall ist, kann auch nur eine Variable von diesem gemeinsamen Typ verwenden und sich das zweite Case-Statement komplett schenken. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 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