FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Benni am 04 März 2023, 14:38:19

Titel: [Erledigt!]Vorschlag/Wunsch deleteKeyValue()
Beitrag von: Benni am 04 März 2023, 14:38:19
Hallo Rudi,

leider gibt es aktuell keine Möglichkeit, ein Key-Value-Pair aus dem KVP-File zu löschen, außer die Datei manuell anzufassen. Das macht spätestens mit configDb schon keinen Spaß mehr ;)

Von daher wäre eine Funktion analog zu setKeyValue() und getKeyValue() wünschenswert.

Ich habe das mal analog zu setKeyValue implementiert und bei mir getestet (hat funktioniert!):


deleteKeyValue($)
{
  my ($key) = @_;
 
  my $fName = AttrVal("global", "keyFileName", "uniqueID");
  $fName =~ s/\.\.//g;
  $fName = $attr{global}{modpath}."/FHEM/FhemUtils/$fName";
  my ($err, @old) = FileRead($fName);
 
  my @new;
  return if($err);

  foreach my $l (@old) {
      push @new, $l if($l !~ m/^$key:/);
    }
  return FileWrite($fName, @new);
}


Evtl. sollte man noch verhindern, das $key selbst regex enthält, da sonst im schlimmsten Fall (.*) alle KeyValue-Pairs gelöscht würden.

Gruß Benni
Titel: Antw:Vorschlag/Wunsch deleteKeyValue()
Beitrag von: betateilchen am 04 März 2023, 15:10:34
Zitat von: Benni am 04 März 2023, 14:38:19
leider gibt es aktuell keine Möglichkeit, ein Key-Value-Pair aus dem KVP-File zu löschen

Doch gibt es. Hast Du mal einen Blick in die fhem.pl geworfen? Da steht sogar wörtlich drin, wie das geht.
Und das wird auch in einigen Modulen genau so gemacht, z.B. im Rahmen der DeleteFn()


# Use an undefined value to delete the key
sub
setKeyValue($$)
{
  my ($key,$value) = @_;



--
Titel: Antw:Vorschlag/Wunsch deleteKeyValue()
Beitrag von: Benni am 04 März 2023, 15:17:54
Zitat von: betateilchen am 04 März 2023, 15:10:34
Doch gibt es. Hast Du mal einen Blick in die fhem.pl geworfen?


# Use an undefined value to delete the key


Ja habe ich, aber den Kommentar habe ich tatsächlich nicht wahrgenommen.

Das passt dann für mich! -> Wunsch erfüllt!

gb#