[Erledigt!]Vorschlag/Wunsch deleteKeyValue()

Begonnen von Benni, 04 März 2023, 14:38:19

Vorheriges Thema - Nächstes Thema

Benni

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

betateilchen

#1
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) = @_;



--
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Benni

#2
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#