Hello, Guest the thread was viewed217k times and contains 1747 replies

last post from Endlosschleife at the

Heute so gecodet...

  • Auf der Arbeit: Die Anmeldedaten von MS Bookings bekomme ich nun sauber in Excel eingelesen und auch ausgewertet (also welche Abteilung wie stark vertreten war). Damit fällt das manuelle Eintragen der Anmeldedaten in die Exceltabelle weg, ebenso die Auswertung für den Chef. Dem schickt Excel auf Knopfdruck eine Mail mit den neusten ausgewerteten Daten. Mein Chef hat auch das Ok gegeben das ich für die Kranschule ebenfalls das Bookings usw. erstellen kann. :thumbsup:


    Auch wenn mir das ganze Spaß macht und ich auch ein bissel Stolz auf meine Arbeit bin, so bleibt das Arbeiten mit VBA unter Excel ein mühsamer Weg, verglichen mit VS2019. :puhh:


    Und zuhause: Auch bei meinem Langzeitprojekt Z80 Disassembler gibts kleine Fortschritte. Heute konnte ich die Ausgabe in die Fehlerliste wieder zuschalten. Das hat besser funktioniert als gedacht. Ich hatte bei den Steuerbefehlen alle bis auf einen Auskommentiert, den Disassembler gestartet und bekam zwei Fehlermeldungen mit Angabe der Zeilennummer. Ich hatte gedacht das ich alles Auskommentiert hatte, aber das stimmte nicht. Es standen tatsächlich noch zwei fehlerhafte Befehle drin und mein Disassembler hat das sauber angezeigt. Ich hatte zwei mal nur ein ' vergessen. 8o

  • Auch wenn mir das ganze Spaß macht und ich auch ein bissel Stolz auf meine Arbeit bin, so bleibt das Arbeiten mit VBA unter Excel ein mühsamer Weg, verglichen mit VS2019. :puhh:

    Mein Beileid! :D

    Quote

    Und zuhause: Auch bei meinem Langzeitprojekt Z80 Disassembler gibts kleine Fortschritte. Heute konnte ich die Ausgabe in die Fehlerliste wieder zuschalten.


    Ich finde das immer so toll bei diesen privaten Projekten. Man arbeitet häufig ja nur relativ kurz dran pro Tag. Aber ist dann ein tolles Gefühl wenn man nach einiger Zeit wieder dran ist und dann sieht wie man doch Stück für Stück seinem Ziel näher kommt. :D

  • Bei der Arbeit endlich fertig geworden mit der Firmware für einen LED Controller für WS2812B Chip LEDs.

  • Heute wurde endlich mein Pullrequest von wxWidgets gemerged. Damit habe ich zumindest ja schon mal den kleinen Zeh in der Tür. :D

    Die Funktion brauche ich als Unterstützung für mein Dockingsystem. Zumindest dieser Teil ist jetzt wenigstens schon mal offizel ein Teil von wxWidgets und auch wenn sie mein Docking nicht dazunehmen wollen, erleichtert es mir die Wartung das als externes Projekt zu führen, wenn ich nicht immer wxWidgets nachpatchen muss.


    Mit dem docking komme ich auch ganz gut weiter. Ich habe beschlossen die Events einzubauen. Das zwingt mich sowieso dazu die Funktionen modularer zu machen. Ausserdem muss ich dafür auf meine Library "von aussen" schauen, so wie sie auch jeder andere User verwenden wird, also ohne internes KnowHow. Dadurch habe ich jetzt schon ein paar Dinge gefunden die die Nutzung erschweren und kann das jetzt schon ändern, bevor sich dann die User beschweren was alles nicht geht oder warum das "so komisch" zu benutzen ist. :)

    Bisher habe ich ja immer innerhalb des Dockings gearbeitet, da fallen dann solche Sachen nicht unbedingt auf. Man macht sich halt Gedanken wie das am Besten zu benutzen sein soll, aber das muss dann ja in der Praxis nicht immer bequem sein.

  • so bleibt das Arbeiten mit VBA unter Excel ein mühsamer Weg, verglichen mit VS2019.

    Bei mir stehen VB6 (seit ewigkeiten mit einem nützlichen Plugin für die IDE) und C# in vsCode zum Vergleich.


    Und ich vermisse es übelst, "einfach so" mitten im Programmlauf Änderungen am Code zu machen, "mal eben" den Programmcounter zu verschieben und die Korrektur sofort nochmal zu verfolgen. Für jeden kleinen Scheiß muss ich in C# abbrechen, neu compilieren, alles neu laufen lassen...
    So schön ich die ganzen Libraries und Sicherheiten im Compiler finde - Muss es denn wirklich sein, dass das Debuggen schlimmer als im Vice ist?

  • Für jeden kleinen Scheiß muss ich in C# abbrechen, neu compilieren, alles neu laufen lassen...

    Wo ist da das Problem? Nach der Methode Hack and Run arbeite ich seit 1984. :D

  • Und ich vermisse es übelst, "einfach so" mitten im Programmlauf Änderungen am Code zu machen, "mal eben" den Programmcounter zu verschieben und die Korrektur sofort nochmal zu verfolgen. Für jeden kleinen Scheiß muss ich in C# abbrechen, neu compilieren, alles neu laufen lassen...

    Das geht nicht in C#? Das können doch mittlerweile selbst C/C++ IDEs? Also den Programmcounter verschieben nicht, da kann ja auch alles erdenkliche schieflaufen (was passiert da z.B. mit dem Stack?), aber zumindest dann beim nächsten Aufruf des Codes den neuen ausführen.

  • aber zumindest dann beim nächsten Aufruf des Codes den neuen ausführen.

    Wenn damit gemeint ist, dass während der Ausführung ( Debug ) der Code geändert werden kann, dann ja. Das geht.

    Wie Du aber schreibst, sind die Änderungen erst nach einem erneutem Start wirksam, zumindest im Quellcode. Aber gut... ist halt keine Interpreter-Sprache. :nixwiss:

    XAML hingegen lässt sich live bearbeiten, falls man WPF verwendet.

  • Und ich vermisse es übelst, "einfach so" mitten im Programmlauf Änderungen am Code zu machen, "mal eben" den Programmcounter zu verschieben und die Korrektur sofort nochmal zu verfolgen. Für jeden kleinen Scheiß muss ich in C# abbrechen, neu compilieren, alles neu laufen lassen...

    Das finde ich recht gut an Visual Studio. Da kann man (in den meisten Fällen) den IP einfach zurücksetzen auf eine andere Adresse. Hängt natürlich vom Code ab ob das gut ist, aber in vielen Situation hilft das enorm, statt ewig neu starten zu müssen.

  • Das geht nicht in C#? Das können doch mittlerweile selbst C/C++ IDEs? Also den Programmcounter verschieben nicht, da kann ja auch alles erdenkliche schieflaufen (was passiert da z.B. mit dem Stack?), aber zumindest dann beim nächsten Aufruf des Codes den neuen ausführen.

    In Visual Studio geht das eigentich. Weiss nicht wie das in C# ist, aber in C++ kann man das mit "Edit And Continue" linken. Verwende ich aber kaum. Den Programcoounter kann man auch versetzen, nur muss man da halt wissen was man tut. :)

  • Das geht nicht in C#? Das können doch mittlerweile selbst C/C++ IDEs? Also den Programmcounter verschieben nicht, da kann ja auch alles erdenkliche schieflaufen (was passiert da z.B. mit dem Stack?), aber zumindest dann beim nächsten Aufruf des Codes den neuen ausführen.

    Zeichen in den Text eintippen geht, nur das laufende Programm bleibt das alte und hat dann nichts mehr mit dem angezeigten Text zu tun. Der Fehler ist trotzdem aufgetreten, und es braucht neues Compilieren, Neustart und Lauf bis zu dieser Programmstelle, um sich die nächsten Fehler anzusehen. Das eine oder andere Mal war auch ein Rechner-Neustart nötig, weil sich XUnit ganz dumm verlaufen hat.


    Ich nehme an, dass VB jedes Unterprogramm als P-Code-Schnipselchen wie einen String auf dem Heap ablegt. Das erlaubt es halt, "mal eben" das geänderte Unterprogramm zu compilieren und auch einen verschobenen Programmcounter wiederzufinden. ALLES geht damit auch nicht, Änderungen an Variablen-Deklarationen z.B. scheiden aus, Änderungen an aufrufenden Routinen hat man sich ebenfalls geschenkt. Aber selbst Schleifen und neue Variablen lassen sich hinzufügen, und üblicherweise sind Bugs in der Zeit behoben, die es zum Tippen braucht.


    Die Sprache ist doch jetzt 25 Jahre alt und war damals ziemlich beliebt, als "Rapid development" das Buzzword war. Sie heute noch zu benutzen ist sicher exotisch, aber mir scheint, das nicht viele hier sie benutzt haben?


    Das finde ich recht gut an Visual Studio. Da kann man (in den meisten Fällen) den IP einfach zurücksetzen auf eine andere Adresse. Hängt natürlich vom Code ab ob das gut ist, aber in vielen Situation hilft das enorm, statt ewig neu starten zu müssen.

    Im aktuellen .Net?? Hast Du mal einen Tipp, wo ich da suchen muss? Aktuell mach ich zwar nur .vsCode und .Core, aber ich hab noch ein VS2013 oder so auf dem Rechner.

  • Im aktuellen .Net?? Hast Du mal einen Tipp, wo ich da suchen muss? Aktuell mach ich zwar nur .vsCode und .Core, aber ich hab noch ein VS2013 oder so auf dem Rechner.

    Wie gesagt, wie das in C# ist, weiss ich nicht. In C++ geht das auf jeden Fall mit Edit & Continue. Ich verwende weder C# noch Edit&Continue. :)


    Aber wenn du nach diesem Begriff googelst findest du auf jeden Fall was dazu:

    "C# edit and continue".


    z.B. Das hier: https://stackoverflow.com/ques…nd-continue-does-not-work Auf den ersten Blick nicht was du brauchst, aber wenn du dir die unteren Antworten ansiehst, dann siehst du dass das scheinbar ab VS2013 vorhanden sein müsste, allerdings mit Einschränkungen (scheinbar noch nicht auf 64 Bit). Mit neueren Versionen scheint das dann aber auch zu funktionieren (zumindest wird da was für VS2017 beschrieben).

  • Nachdem ich ja meine erste Hilfsfunktion in wxWidgets gemerged habe, hat mich der Entwickler noch gebeten ein Beispiel zu sschreiben dass die neue Funktion demonstriert. Gut, habe ich gemacht und habe mich dabei an den bestehenden Beispielen orientert. Daraufhin hat mich der Entwickler angeschrieben und gemeint das mein Beispiel so nicht funktionieren dürfte und ob ich mal nachschauen kann warum es trotzdem funktioniert.

    Tja, nachdem ich mir das angesehen habe, habe ich festgestellt dass in der wxWidgets Library, ein Fehler drin war, der aber schon recht lange drin sein müsste. Da die bisherigen Beispiel für diesen Bereich recht simpel waren (soll ja nur eine Demonstration sein) ist das allerdings nie aufgefallen und wer schaut schon ständig in alten funktionieren Code rein. :D

    Also wenn ich es richtig sehe ist dieser Fehler schon seit 23 Jahren drin. :thumbsup:


    Na, das sollte mir ja hoffentlich einen Bonus geben, wenn ich dann mein Docking mergen will. :D


    Da wird es aber ein grosses Heulen und Zähneknirschen geben, wenn sich die Programmierer mit diesem Bug herumgeschlagen haben, u.U. nicht mal bemerkt haben dass sie einen Fehler machen, und ihre Programme jetzt nicht mehr so funktionieren wie vorher weil das jetzt gefixed ist. :D

  • Auf den ersten Blick nicht was du brauchst, aber wenn du dir die unteren Antworten ansiehst, dann siehst du dass das scheinbar ab VS2013 vorhanden sein müsste, allerdings mit Einschränkungen (scheinbar noch nicht auf 64 Bit). Mit neueren Versionen scheint das dann aber auch zu funktionieren (zumindest wird da was für VS2017 beschrieben).

    Echt jetzt? Unter z.B. Java geht Hot Code Replacement inkl. Restart von geänderten Routinen seit Jahrzehnten. Mit zusätzlich JRebel habe ich seinerzeit (öh... 2008?) am "laufenden Objekt" teilweise tagelang ohne Neustarts gebastelt, teilweise sogar mit Refactoring und Einbauen neuer Klassen und so weiter. Klar "geht das im Allgemeinen gar nicht", aber in der Praxis geht's ganz schön häufig ziemlich gut. :)

  • Echt jetzt? Unter z.B. Java geht Hot Code Replacement inkl. Restart von geänderten Routinen seit Jahrzehnten. Mit zusätzlich JRebel habe ich seinerzeit (öh... 2008?) am "laufenden Objekt" teilweise tagelang ohne Neustarts gebastelt, teilweise sogar mit Refactoring und Einbauen neuer Klassen und so weiter. Klar "geht das im Allgemeinen gar nicht", aber in der Praxis geht's ganz schön häufig ziemlich gut. :)

    Willkommen im Club :-) Ich programmiere in vb.net im Visual Studio, da muss man den auch schon schön ärgern, wenn man im unterbrochenen Debug-Modus nicht mehr fortsetzen kann. Recht häufig weigert er sich meiner Beobachtung nach, wenn man einen Syntaxfehler tippt, fortsetzen will (geht ja nicht), den Fehler korrigiert und dann stellt er fest, dass er keine Lust mehr hat. Das "Basteln" am laufenden Objekt ist eine der geilsten Funktionen, die es gibt.

  • Alles eine Frage der Gewohnheit ;)

    Ich nutze für Desktop-Anwendungen fast ausschließlich WPF und finde es auch sehr vorteilhaft, dass ich im laufenden Betrieb die XAML anpassen kann.

    Aber für den tatsächlichen C#-Quellcode habe ich das nie genutzt oder wirklich vermisst.

  • Krassen Mathe-Scheiss... Ich hätte im Traum nicht gedacht, dass mir sowas mal im wahren Leben begegnen würde.

    Im Voraus:

    - Da sind Element: ABCDEFGHIJ.... Können tausende werden.

    - Es gibt eine Liste, wie Elemente durch Paare bei Bedarf ersetzt werden könnten: A=C+C, A=D+E, B=E+E, C=F+G, C=F+H... Können auch tausende werden.


    Beim Lauf:

    - Ein paar Elemente snd gegeben: AHILLLLLMPPPP... Schlimmstenfalls wenige Hundert.

    - Reichen die Elemente, um ABCDE auszudrücken? Oder BDFFF? Oder ABCEFF? Zehntausende Einträge in dieser Liste, aber nur wenige Elemente.
    - Einträge aus dieser Liste, die nicht gehen, werden verworfen, die Liste so bereinigt.

    - Elemente werden entfernt, die Liste bereinigt, weitere Elemente werden entfernt, die Liste bereinigt... Bis alles weg ist.


    Es ist nicht schön geworden, aber im Moment ist es gut und schnell genug.
    Aber ich nehme stark an, dass ich das irgendwann mal optimieren muss.

  • Im Voraus:

    - Da sind Element: ABCDEFGHIJ.... Können tausende werden.

    - Es gibt eine Liste, wie Elemente durch Paare bei Bedarf ersetzt werden könnten: A=C+C, A=D+E, B=E+E, C=F+G, C=F+H... Können auch tausende werden.

    Klingt nach einer kontext-freien Grammatik, wenn ich es nicht falsch verstehe.

    Das ist doch ein in der Literatur gut abgehandeltes Thema, da es für den Compilerbau sehr wichtig ist.


    Oder übersehe ich etwas?

  • Gestern mal wieder in meinen hingeschlunzten C64-Emulator nachgeguckt, weil mich immens gestört hat, dass er zwar wunderbar hochfährt, die BASIC-Startmeldung anzeigt, aber der Cursor nicht blinkt. Doofen Fehler gefunden (I-Flag gesetzt vor dem Pushen des Status-Bytes, nach RTI ist es natürlich immer noch gesetzt) Jetzt blinkt der Cursor!