Laden...

C# Formelsammlungen mit Werteeingaben und Einheiten

Letzter Beitrag vor 10 Monaten 1 Posts 532 Views
C# Formelsammlungen mit Werteeingaben und Einheiten

Moin,

ich habe ein Programm in TypeScript (Angular) erstellt, bei dem innerhalb von Formeln Werte und Einheiten eingegeben werden könnten. Das Projekt ist auf angulartool.de zu sehen.

Der Programmaufbau ist kurz umrissen:

Jede Variable ist eine Klasse mit den Properties, welche zur Anzeige im HTML notwendig sind.

Das HTML für einzelnen Pages der jeweiligen Formeln ist immer die gleiche html-Datei.

Bei der Benutzereingabe (KeyDown und Up) wir die Werteingabe geprüft und dann diese anhand des Variablenname (Property-Name) und einem String zu ein Funktionsaufruf "gebaut" - also imperativ. Innerhalb der Funktion(en) wird dann die entsprechende Berechnung durchgeführt und das im Ergebnis veränderte Variablen-Objekt entsprechend bei den Properties geändert.

Die Einheiten werden über Button anhand eines Switch/Case umgeschaltet und der entsprechende Faktor auf den nominalValue für den showValue multipliziert.

Eine Liste bei der Initialisierung der Seite erstellt dann die notwendigen HTML Bausteine automatisch.

Ich habe hierzu ein bisschen Klassen (Variablen) und viel Funktionen und Discrepancy Injection für die statischen shared Kontroll-Funktionen genommen.

So werden einfach neue Variable im Code mittels einem Constructors generiert:

...

public W = new VariableUnitBuilder('W', 'mm³', 0, 'Widerstandsmoment', 'W', false, 'xW', true, 'Wx', 'Wy');
public Euler = new VariableUnitBuilder("Euler", "+", [1, 2, 3, 4], "Eulerfallzahl 1-4", "Nr.", false, 'E', true, '-', '-')

...

der HTML Aufbau bestimmt:

this.variableList.push(
this.F,
this.L,
'---Momente und Spannungen------',
this.Mt,
this.Szul,

'br'

....

So weit so lala...

Nun muß ich die Ergebnisse mit LATEX in einem verwertbaren Bericht darstellen und nicht nur eine Ergebnisliste ohne den Rechenschritte.

Hier kommt m.E. der Internetbrowser mit Javascript ans Limit, daher will ich eine Desktop Version mit einem LATEX Generator schreiben und dabei insbesondre für die Gesamtanwendung  OOP konsequent verwenden. Und natürlich in C#!

In der üblichen Doku und Tutorial wird gerne von Person and ToDo gesprochen, aber nicht wie ich ein Variablenobjekt mit Funktionen sinnvoll verknüpfen kann. GETer und SETer klingen schon einmal gut, aber der Code für eine neue Formel (Kreis oder Anderes) sollte schnell nach Schema! programmiert werden.

Wer kann mir ein gutes GitHub Project, Buch oder Tutorial (auch Englisch) hierzu empfehlen. Die Grundlagen von C# kann ich einigermaßen verstehen.

Insbesondere frage ich mich, ob der Weg über die Variable(Klasse) mit den allen steuernden Properties der richtige Weg ist:

public varName: string = '';
public varLabel: string = '';
public varSymbol: string = '';

public unitBase: string = '0';
public unit: string = '0';
public scaleSelect: number = 1;

public inputStr: string = '0';
public inputValue: number = 0;
public nominalValue: number = 0;
public ergebnis: boolean = false;
public showStr: string = '0';
public showValue: number = 0;
public nominalValueOld: number = 0;

public fixActiv: boolean = false;
public fixGroup: string = '';
public fixStatus: boolean = false;

public fixLabelStr: string = '';
public fixTrueLabel: string = 'fix';
public fixFalseLabel: string = 'var';

public selectBox: boolean = false;
public inputValueString: number | string | (number | string)[] = ''

public subindex: string = ''
public subtext: string = ''

public keyStr: string = ''
public SelKeyStr 😒tring []= []

public checkNumber = isNaN(this.showValue)

und das "Delegat" zum Funktionsaufruf so sinnvoll ist:

keyup(obj: VariableUnitBuilder): void {
this.validate(obj);

// @Functioncall  keyup_W. Also alles ohne den klassischen Eventlistener

const FunctionCall: string = 'keyup_' + obj.varName;
const Vari: string = obj.varName;

try {
// @ts-ignore
this[FunctionCall](obj);
this.Meldung = FunctionCall;

} catch (e) { // @ts-ignore
this.Meldung = e.toString()
}

this.calc()
}

VIELEN DANK.

JürgenG

angulartool.de

Formelsammlungen mit Werteeingaben und Einheiten sind was Feines,

aber nicht beim Programmieren … angulartool.de