Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 12.03.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard Problem bool Variablen

Die integer und string Variablen habe ich hinbekommen (für jede Benutzer-Variable noch eine "Programm-Variable", die zu Beginn entweder den Config- oder den Benutzer-Wert bekommt).

Die Schwierigkeit liegt bei den bool Variablen:
Gespeichert werden sie als Text in der Config-Datei, unabhängig davon ob das nun TEXT oder CVS Format ist. Wenn ich sie also aus der Textdatei wieder einlese, dann habe ich ja einen string.

Als Benutzerangabe nehme ich
Code:
extern bool Variable=true; // oder false
und zwar aus dem Grunde, weil da ganz klar (in Texform) steht, ob man als Benutzer wahr oder falsch wählt, denn ich kann von einem Benutzer nicht erwarten, daß er weiß was 0 und was 1 ist.
Ohne Config-Datei (also wenn die Angaben nicht gesichert werden sollen, sondern nur die aktuellen Benutzereingaben gelten) bekomme ich bei
Code:
Print(__FUNCTION__," SHOWHISTORY=",SHOWHISTORY);
//Resultat: OnInit SHOWHISTORY=false
also einen String. Beim Kompilieren krieg ich aber den Hinweis "implicit conversion from number to string", was wiederum nahelegt, daß es sich um einen integer handelt. Wenn ich aber dann umwandle:
Code:
SHOWHISTORY=StrToInteger(FileReadString(handle));
//Resultat: SHOWHISTORY=false auch wenn es true ist
//Config-File: true|true|false|true|....
Und sowas wie StringToBool gibt es nicht. Ist die einzige Lösung hier tatsächlich nur die Benutzerangaben als integer zu definieren und dann halt 0-false 1-true auch noch als Hinweis dazu zu schreiben?

Was ist Eure Meinung/Erfahrung dazu? AVT