Suchergebnisse

Suchergebnisse 1-30 von insgesamt 35.

  • Benutzer-Avatarbild

    Hallöchen, ich möchte diesen Beitrag als eine Art Blog zum Projektfortschritt nutzen. Sollte es eine Blog-Funktion hier geben, habe ich sie nicht gesehen und bitte um den entsprechenden Hinweis. Wenn das doch in ein anderes Forum gehört, bitte verschieben. Also, worum gehts? Ich bin hier sicherlich nicht der Erste, der einen Formelparser schreiben will und meiner ist wohl auch nicht der beste aller Formelparser, aber er ist eben meiner . Dieser soll Kern eines Funktionsplotters werden, der späte…

  • Benutzer-Avatarbild

    Sehr schön, die Umgekehrte Polnische Notation habe ich schon mal als Idee für die weitere Umsetzung notiert und so ganz nebenbei jetzt auch verstanden. Am Expression-Tree muss ich noch etwas herumdenken...

  • Benutzer-Avatarbild

    Ich habe hier ein paar garstige Formeln gefunden, mit denen mein Wunderwerk regelmäßig auf die Nase fällt. Konstrukte wie „(3-4^2)*1“ oder „(2*2+2)*2“ sind jeweils unterschiedlich zu behandeln. Kann ich jedem Parser-Bastler nur empfehlen, damit zu testen. Vermutlich ist das sehr viel einfacher mit der Umgekehrten Polnischen Notation oder auch PostFix-Notation. Ich muss nur den Verschiebebahnhof bauen, um meine Tokens von InFix- zu PostFix-Notation umzurangieren. Diese Klammern nerven echt... Der…

  • Benutzer-Avatarbild

    Ich denke mal, das gibt ein Re-Design. Ihr seid echt gut! Folgendes ist angedacht: Die Token bekommen ein paar Eigenschaften mit auf den Weg, wie die Information, ob es eine Zahl ist oder nicht (Boolean), den Operatoren-Rang (im Moment 0 bis 4) und die Anzahl der Argumente, die der Operator braucht (0 bis 2). Das Sortieren nach Operatoren-Rang muss ich moch überdenken, ich will es ja verstehen und nicht einfach abtippen. Wenn dann alles in der korrekten PostFix-Notation abgelegt ist, wird es ein…

  • Benutzer-Avatarbild

    Hier mal die Beschreibung meines Re-Designs etwas ausführlicher, auch um mir selber die Gedanken zu ordnen. 1. Eingabe des Terms. Wenn nötig, definiert der User vorher Symbole, die im Term verwendet werden sollen, zum Beispiel A = 3 oder x = 5. Die Eingabe des Terms erfolgt in InFix-Notation, weil die meisten User das so gewohnt sind, also zum Beispiel 3 + 5 . Später kann es die Option geben, das alles in umgekehrt polnischer (PostFix-)Notation einzugeben für die absoluten Nerds. Eingaberegeln b…

  • Benutzer-Avatarbild

    So, der Rangierbahnhof für Tokens compiliert schon mal und funktioniert auch bei ersten Test, ohne auf die Nase zu fallen, aber es wird natürlich noch nicht richtig rangiert.

  • Benutzer-Avatarbild

    Ja klar, von wirklich "funktionieren" trennt mich und den Code noch einiges. Aber ich habe am offenen Herzen den Code von einem Konzept auf ein anderes umgestellt, da kann schon mal was vergessen werden. Bestimmt habe ich auch irgendwo noch was vertauscht, dass es fehlerfrei compiliert hat, erlaubte schon mal den Weg ins Heiabettchen. Das Ganze sitzt in einem Test-Projekt, da kann ich mir den Inhalt der Tokenliste anzeigen lassen und wenn ich weiter umgestellt habe auch wieder den Inhalt des Rec…

  • Benutzer-Avatarbild

    Nachdem ich mir diesen Link zu Wikipedia genauer angesehen habe, verstehe ich wohl besser, was mein Problem war. Als alter Modellbahner kann ich natürlich mit einem Rangierbahnhof was anfangen. Ich dachte, man muss alle Waggons (sprich Tokens) über den Stack in die Ausgabe rangieren. Das gilt aber nur für Operatoren. Die werden erst in das Stack-Gleis geschoben und dann daraus wieder, jetzt in umgekehrter Reihenfolge, an den Output-Zug (meine Postfix-Tokens) angekoppelt. Zahlen wandern direkt in…

  • Benutzer-Avatarbild

    Mit dem obigen Term "1 + 2 * 3" rechnet es schon mal richtig und sortiert auch die Tokens wie erwartet. Das sagt natürlich noch nichts aus, dafür muss ich mehr testen, aber es ist ein erster Schritt mit besserem Ergebnis, als bisher. Die Idee mit Excel als Vergleichsrechenmaschine, welche ja hier kritisiert wurde, hätte bei Umsetzung den Charme, dass ich die Vergleichsrechnung nicht erst hartcodieren muss. Ich tippe meinen Term ein, Excel rechnet das Ergebnis aus und mein Interpreter mit Namen V…

  • Benutzer-Avatarbild

    Bei dem Bild von dem Gleisdreieck in dem Wikipedia-Artikel war mir plötzlich alles klar und jetzt funktionierts anscheinend auch wie gewünscht. Muss natürlich noch eine Testmimik drumherum bauen.

  • Benutzer-Avatarbild

    Per Excel-Automation habe ich jetzt auch eine Referenz für das Ergebnis. Im Wesentlichen ein Sheet anlegen und darin den Term mit "=" davor eintragen an A1, Calculate aufrufen und den Value der Range ("A1", "A1") abrufen.

  • Benutzer-Avatarbild

    Was deeeennnn? Ich brauche doch irgendetwas, das meine Rechenergebnisse nachrechnen kann und das kann Excel ziemlich gut, nur bei den Funktionen ATN und SQR hakt es noch, weil die bei Excel anders heißen.

  • Benutzer-Avatarbild

    Also gut, ich gucke mir das mal genauer an mit den Unit-Tests. Aber im Moment geht es darum, zu sehen, ob mein Parser mit irgendwelchen Terms richtig rechnet. Da benutze ich eben Excel per Automation, um meinen Term zu übergeben. Excel kann das ausrechnen und das Ergebnis kann ich vergleichen und dann weiß ich, ob mein Parser richtig rechnet. Die Sache mit den Unit-Tests sieht sehr viel aufwändiger aus und ich hab keine genaue Ahnung, was die machen, weshalb ich das ja auch gar nicht ablehnen wi…

  • Benutzer-Avatarbild

    Moin zusammen, der Witz ist ja, das richtige Ergebnis nicht erst selbst mühsam auszurechnen, sondern dafür Excel herzunehmen, das das ja schon kann. Das muss auch erstmal bei niemand sonst laufen, nur bei mir. Ich hab mir eine Form gebaut, in der das alles getestet wird. Wenn das Ergenbis stimmt, wird die Textbox grün, sonst pink. Und seit ich die englischen Original Excel-Funktionen für Arcustangens (ATAN satt ARCTAN) und Wurzel (SQRT statt WURZEL) verwende, kann es die auch auswerten. Die muss…

  • Benutzer-Avatarbild

    Hallöchen, mal wieder eine Nachricht aus meiner rollenden Coding-Höhle. Mittlerweile steht das Grundgerüst für den Funktionsplotter. Darin arbeite ich viel mit den "List(Of T)" Elementen, Konstrukten oder wie immer man das nennen soll. Es gibt eine Liste der Funktionen, die der Funktionsplotter bearbeiten und anzeigen kann (maximal 16, also mit Indizes von 0 bis 15) mit den Namen FXA bis FXP. Jede dieser Funktionen hat eine Laufvariable und bis zu 15 Konstanten, deren Werte ich vor der ersten Be…

  • Benutzer-Avatarbild

    @ErfinderDesRades: Jawoll, das hat funktioniert. Als Ergänzung, weil ich das nicht in der Hilfe gefunden habe: IndexOf gibt -1 zurück, wenn das Argument nicht in der Liste gefunden wird. @RushDen: Ich habs jetzt so hingekriegt mit den Listen, dass der Term verarbeitet wird, in PostFix-Notation umgestellt wird und auch richtig berechnet wird. Vielleicht hab ich mir damit mehrfach ins Knie geschossen, aber es funktioniert jetzt. Das mit den Bäumen und Verzweigungen versuche ich später mal. Muss ic…

  • Benutzer-Avatarbild

    Hallo, es geht hier natürlich weiter, nur war ich in letzter Zeit anderweitig beschäftigt. An meinem Projekt habe ich hier und da ein bisschen gebastelt, aber nichts Substanzielles bisher. Das soll jetzt anders werden. Ich habe aber, immer wenn es etwas zu Berechnen gab, meinen Formelparser benutzt und der hat sich bisher noch nicht verrechnet. Zum besseren Testen muss ich ja meine Funktion f(x) speichern und wieder laden können, ebenso die Einstellungen meines Funktionsplotters. In der alten VB…

  • Benutzer-Avatarbild

    Ja klar, war ja auch Pseudocode und heißt jetzt ValfFunction. Der Term kann Konstanten und Variable enthalten (ich nenn die Symbole), wie z.B. A*x^2+B*x. Da muss der Parser die Werte für A, B und x kennen, wobei x in dem Fall die Laufvariable ist. Aber auch das muss der Parser wissen, darum das ganze Zeugs da drumherum. Gerade hab ich es zum Fliegen gekriegt mit Serialisierung und Deserialisierung. Ist wahrlich keine Raketenwissenschaft und ich hab wieder was gelernt.

  • Benutzer-Avatarbild

    Hallöchen, hier die offizielle Erfolgsmeldung mit ein bisschen Beispielcode. Folgende Klasse habe ich definiert zur Aufnahme der Daten einer Funktion, wie sie mein Matheprogramm verwenden soll: VB.NET-Quellcode (22 Zeilen) Ich lege eine Instanz der Klasse an, befülle die Eigenschaften mit Inhalt und dann wird gespeichert: VB.NET-Quellcode (23 Zeilen) Das Ergebnis in XML für die simple Funktion A * x, also mit zwei Symbolen, davon einer Laufvariablen, sieht dann so aus: XML-Quellcode (17 Zeilen) …

  • Benutzer-Avatarbild

    @ErfinderDesRades: MIt dem Exception-Handling hast du natürlich recht, die IDE kann das viel besser, als ich mit meiner Messagebox. Wenn ich wohin schreib, wo ich auch schreiben darf, wenn das zu Lesende auf Anhieb gefunden wird und wenn sich zwischendurch die serialisierte Klasse nicht geändert hat (also wenn ich sie nicht geändert hab), passiert eigentlich auch nichts. Da kann das Try-Catch weg und ich seh dann besser, was wirklich schiefgehen kann. Fehlerbehandlung ist auch noch eine Baustell…

  • Benutzer-Avatarbild

    @VB3-Guru: 3D ist schon toll, schau ich mir bei gelegenheit mal an. @ErfinderDesRades: Was ist denn von diesem ExceptionHandling zu halten? VB.NET-Quellcode (14 Zeilen) Ich kenne zwei Exceptions, die ich durch Rumspielen rausgefunden habe. Machen kann man da nicht viel, aber ich kann dem User anzeigen, warum er seine Datei jetzt nicht laden kann. Kommt dann eine, die ich nicht kenn, werf ich damit in der Gegend rum und die müsste ja dann in der IDE aufschlagen, weil nicht behandelt.

  • Benutzer-Avatarbild

    An der Stelle wird eine Projektdatei geladen, das heißt es werden eine oder mehrere Funktionsdateien (auch XML natürlich) in den Funktionsspeicher geladen. Deren Pfade stehen in der hier geladenen Projektdatei. Darum auch der eher allgemein gehaltene Rückgabewert blnSuccess. Wenn der False ist, brauch ich nicht weitermachen. Was schiefgegangen ist, erfährt der User durch Messageboxen. Die IOException kommt z.B. dann, wenn irgendetwas noch ein Handle auf die Datei offen hat. Die InvalidOperationE…

  • Benutzer-Avatarbild

    Hallo, die Sache mit der Serialisierung habe ich verstanden und denke, dass ich es umsetzen kann. Exception-Handling ist dabei sicher noch ein Thema und ich werde die Überlegungen vom @ErfinderDesRades dabei natürlich berücksichtigen. Wer einen Funktionsplotter bauen will, der muss irgendwann auch mal Zeichnen. Geplant ist folgendes: Der Funktionsplotter kann 16 verschiedene Funktionen speichern und damit arbeiten. Also soll es auch maximal 16 verschiedene Ausgabefenster für die Graphen geben. E…

  • Benutzer-Avatarbild

    Richtig, erstmal mach ich das nur für mich, will dabei natürlich sinnvollen Code bauen, der auch unter anderen Bedingungen nicht sofort auf die Nase fällt. Aber eine Vermarktung oder Weitergabe ist vorerst nicht geplant.

  • Benutzer-Avatarbild

    Also ich werde da mal ein bisschen herumprobieren. Erstmal die Daten eines Graphen berechnen und in einer Tabelle speichern, das kann man ja immer brauchen. Dann aus dieser Tabelle im Paint-Event zeichnen, ausprobieren wie das mit der Backgound-Image-Eigenschaft funktioniert, wenn ich zuerst in eine Datei zeichne und die dann lade oder eben das MS-Chart-Control nehmen, wobei das meiner Faulheit wohl am ehesten entgegen kommt. Eigentlich will ich die Zeichnung machen und gestalten, aber nicht dau…

  • Benutzer-Avatarbild

    Es zeichnet nicht...

    Carbonunit - - Sonstige Problemstellungen

    Beitrag

    Hallo, ich will zunächst die drei Möglichkeiten, also Paint-Event, in Datei zeichnen und als Backgroundimage laden und MS-Chart Control mal ausprobieren. Nur dafür müßte es wenigstens irgendwas zeichnen. Das tuts aber nicht. Im Folgenden der Code, von dem ich denke, dass er fürs Zeichnen im Paint-Event relevant ist. Sicher fehlt noch irgendwas, nur ich weiß nicht was. Dieser Code wird aufgerufen, wenn der Menuepunkt Funtion in neuem Fenster zeichnen gewählt wird: VB.NET-Quellcode (20 Zeilen) frm…

  • Benutzer-Avatarbild

    Zitat von ErfinderDesRades: „wie ich sehe - mein gegebener Link hat dich ja nicht weiter beeinflusst.“ Der Link aus #43? Hab ich ehrlich gesagt nicht so richtig verstanden... Zitat von ErfinderDesRades: „Ich hab auch ein OwnerDrawing-Tut gemacht“ Das sieht imteressant aus, damit komme ich wohl weiter. Zitat von ErfinderDesRades: „Es mag unkreativ erscheinen, aber besseres Programmieren, und auch besseres Programmieren Lernen ist, professionelle Infrastruktur richtig benutzen zu lernen, anstatt S…

  • Benutzer-Avatarbild

    Es zeichnet

    Carbonunit - - Sonstige Problemstellungen

    Beitrag

    Hallöchen, hier das erste Beweisfoto: vb-paradise.de/index.php/Attac…b25fb4a0b4b331d657bd3b3c5 Da ist natürlich noch längst nichts in einem vorzeigbaren Zustand, aber die Sache mit dem Ownerdrawing funktioniert schon mal. Jeder Speicherplatz meines Funktionsspeichers enthält jetzt noch zwei Listen. Einmal die Rohdaten mit den x- und y-Werten, die sich aus der Berechnung ergeben. Dann eine zweite, gleichgroße Liste mit System.Drawing.Point-Objekten. Aus dieser Liste zeichne ich im Paint-Event der…

  • Benutzer-Avatarbild

    Zitat von ErfinderDesRades: „deaktiviere den MVB-Namespace-GeneralImport!“ Ja, muss ich noch machen, das gibt im Moment über 80 Fehler, meistens bei so Sachen wie Mid, Len, Instr oder den nicht sichtbaren Zeichen wie vbCrLf. Wenn ich mal wieder Lust zur öden Überarbeitung habe, wird das erledigt. Oder erstmal Dateiweise. Also Generalimport deaktivieren und überall Import Microsoft.VisualBasic drüberschreiben. Sind zum Glück nicht mal alle Dateien des Projekts, wo das drinsteckt. So habe ich das …

  • Benutzer-Avatarbild

    Zitat von Gelöschter Benutzer: „Und ich dachte immer als "erfahrener" Informatiker macht man gleich alles richtig.. Ehrlich gesagt hätte ich mehr nach der Vorstellung deiner Person erwartet.“ Niemand macht immer alles richtig. Ich bin seit sieben Jahren aus dem Job raus und VB.NET war in den letzten Jahren bis 2010 auch nicht mehr meine Hauptaufgabe. Dafür klappt es aber immer noch ganz ordentlich. Im Support, dazu noch in der Höhle des Löwen (Microsoft) ging es vor allem darum, dass die Leute i…