Hello, Guest the thread was viewed358k times and contains 2160 replies

last post from lame-zock-opa at the

Heute so gecodet...

  • Mal ein Thread Äequivalent für "Heute so gebastelt..." für Coder.



    Ich fange mal an.


    Ich habe ein Tool für die Erkennung der installierten .NET Framework Versionen benötigt.
    Habe zwar vor einer Weile schon eins in VB.NET Code erstellt. Das ist aber etwas witzlos, da es .NET 2.0 voraussetzt und es ist mir ein paar Mal bei Kunden passiert, dass diese .NET 4/4.5/4.6.x drauf haben und eben kein 2.0/3.0/3.5.


    Das kleine Tool soll möglichst keine Abhängigheiten haben, damit es auf allen vernünftigen Windows-Versionen als Copy+Paste EXE läuft.
    Da hat man dann nicht viel zur Auswahl: Entweder C++ oder VB6. Letzteres wird früher oder später abgeschossen als Runtimes, also bleibt C++ und Win32 API.


    Habe dazu diesen C++ Code mal kopiert. Funktioniert auch, aber als Win32 GUI App. Doof. X/
    Muss es mal auseinandernehmen und auf Konsolen-App umstellen.


    @Tale-X: Was ist der Unterschied zwischen dem "<MeinIcon>.ico" und "small.ico"? letzteres als Standardicon ist kleiner in der Grösse, aber wieso benötigt es 2 Icon-Dateien? Die haben doch alle Grössen drin?
    Unter .NET GUI-App gibt es auch zwei Icons: Eins für das EXE und eins für das Fenster-Icon. Ist "small.ico" für das Fenster? :gruebel

  • So, die Win32 Console App ist auch fertig. Sogar mit Icon. Bin total eingerostet in C++, das hat viel zu lange gedauert.
    So banale Dinge wie Strings behandeln sind echt viel einfacher in .NET.

  • Icons... Thema mit dem man während der Programmentwicklung nur einmal Kontakt hat... Ich hab bei mir in den Anwendungen nur ein Icon mit verschiedenen Größen drin. Und Konsole ist bei mir in der Regel ohne Icon - was im Hintergrund läuft, muss nicht klickibunt gemacht werden ;)


    Strings... auch in MFC kein Problem dank CString...-Klassen. Ich dachte ja, dass die Standardlibrary auch gescheite String-Klassen bietet, scheint wohl nicht so zu sein. Bei Win-Konsole nutze ich - wenn ich nicht wegen anderer Dinge schon MFC eingebunden habe - hauptsächlich die _tcs...-Funktionen (_tcslen, _tcsstr, _tcsncpy etc. - bzw. die Safe-Varianten davon ).

  • Zwar nicht heute, aber vor ein paar Wochen habe ich mal ein kleines Python-Skript geschrieben, das C64-Multicolor-Sprites, die zuvor in GIMP oder einem sonstigen Grafikprogramm erzeugt wurden und als PNG gespeichert wurden, in ACME-Syntax umwandelt. Ich weiss, es gibt auch "richtige" Sprite-Editoren, die ich verwenden koennte, aber in meinem Fall lagen die Sprites schon durch den Python-Prototyp in Form von PNGs vor, sodass das auf diese Art und Weise einfacher war:



    Die Farben sind in den Zeilen 17, 19 und 21 zu finden; d.h. meine Sprites waren im PNG also in Form von weiss, grau, und magenta angelegt (plus eine beliebige andere Farbe als Hintergrund). Wer andere Farben verwendet, muss diese halt entsprechend im Code anpassen.


    Die Sprite-Konvertierung wird, wie man sieht, ab Zeile 30 angestossen. Hier einfach eine komplette Liste der Sprites anlegen, dann werden die alle nacheinander in die Datei "sprites.txt" gelegt. Ein einzelnes Sprite in dieser Datei sieht dann so aus:


    Diese Datei laesst sich dann einfach in den restlichen Assembler-Code einbetten oder includen.


    Das Skript benoetigt die Pygame-Lib.

  • Und Konsole ist bei mir in der Regel ohne Icon - was im Hintergrund läuft, muss nicht klickibunt gemacht werden

    Ähem...ich hab es gerne, wenn ich in einem Verzeichnis wo doch einige Dateien drin sein können, schnell ein Programm rein visuell durch Farben/Icons erkenne.


    Das ist in der Testphase (und langen Arbeitstagen, wo die Augen langsam müde werden) durchaus oft so, dass ich auch Konsolen-Apps durch Doppelklick starten muss.
    Insofern finde ich es schon richtig, dass auch eine Konsolen-App EXE ein eigenes Icon hat.

  • Dieser Tage wurde bei uns in der Bude an einer Maschine nachträglich eine automatische Schmiermittelpumpe installiert.
    Ich habe das Ding heute ins S7 Programm und in die WinCC Visualisierung "gecodet".
    Zählt das ? :thumbsup:

  • Dieser Tage wurde bei uns in der Bude an einer Maschine nachträglich eine automatische Schmiermittelpumpe installiert.
    Ich habe das Ding heute ins S7 Programm und in die WinCC Visualisierung "gecodet".
    Zählt das ? :thumbsup:

    Alles was soft ist und nicht hard "gecoded" ist: :dafuer:

  • vor ein paar Wochen habe ich mal ein kleines Python-Skript geschrieben, das C64-Multicolor-Sprites, die zuvor in GIMP oder einem sonstigen Grafikprogramm erzeugt wurden und als PNG gespeichert wurden, in ACME-Syntax umwandelt.

    :thnks:
    Das hätte ich letztens für "mousetest" gut gebrauchen können, aber es gibt sicher ein nächstes Mal...

    Ein einzelnes Sprite in dieser Datei sieht dann so aus:

    Code
    1. ;-- sprite 10
    2. !align 63, 0, 0
    3. [...]
    4. !byte %......#., %#.#....., %........
    5. [...]

    Willst Du dafür nicht lieber das SpriteLine-Makro benutzen? Siehe docs/AllPOs.txt bzw. den mousetest-Source. Dann sähe die obige Zeile so aus:

    Code
    1. +SpriteLine %......#.#.#.............

    Das erleichtert nachträgliche Änderungen.


    ...seit ACME 0.95.7 geht es übrigens auch ganz ohne spezielles Makro, da man jetzt per "!be16", "!be24" und "!be32" Werte auch big-endian ablegen kann. Die obige Zeile kann also auch als

    Code
    1. !be24 %......#.#.#.............

    geschrieben werden, benötigt aber einen aktuellen ACME.

  • Alles was soft ist und nicht hard "gecoded" ist: :dafuer:

    Zählt auch VBA unter Excel? :D


    Mache ich auf der Arbeit momentan richtig viel. Gar nicht so einfach ne Tabelle DAU-Sicher hinzubekommen. :puhh:


    Ich wäre schon froh, wenn der VBA Editor nur die Hälfte der Fähigkeiten vom Visual Studio hätte. :umfall:

  • Habe dazu diesen C++ Code mal kopiert. Funktioniert auch, aber als Win32 GUI App. Doof.
    Muss es mal auseinandernehmen und auf Konsolen-App umstellen.

    Auf der Seite sind ja mehrere Versionen. Der einfachste Test scheint
    mir der nach den Reg-Entries zu sein. So weit ich den Code verstanden
    habe wird unter "Software\\Microsoft\\.NETFramework\..blabla" gesucht.


    Schau mal unter "Software\\Microsoft\\NET Framework Setup\\NDP"
    nach. Da finden sich mehrere Ordner, je Version einer. Je Version ist
    ein Wert "Install", immer mit "0x0000001" gesetzt. Das zu testen dürfte
    wesentlich einfacher/systematischer sein. Insbesondere ist damit sogut
    wie keine Stringbearbeitung nötig.


    Falls du z.B. mit VirtualBox eine VM mit XP aufsetzen kannst, dann lässt
    sich ja jede NET-Version aufspielen und mit der Test-Software abchecken.



    Edit: Gerade noch gefunden:
    https://msdn.microsoft.com/de-…y/hh925568(v=vs.110).aspx

  • Ich mache gerade was um auf gang ganz ... ganz vielen Servern die Logs des nächtlichen TSM-Backup-Laufs auszuwerten. Mit Windows-Servern klappts schon, als nächstes muss ich noch hinbekommen, die selben Infos (per Putty und WinSCP) aus Linux-Büchsen rauszuholen. Die Auswertung, die der TSM-Server zumailt (auf den TSM-Server selbst haben wir keinen Zugriff, der ist vom Serverhoster outgesourced und wird wiederum von anderen outgesourcten Admins in Südasien betreut...), reicht nicht um Fehler zu finden.

  • Heute gönne ich mir eine Druckerpause und spiele etwas mit VB.net rum. Nicht das ich alles vergesse wegen dem schrecklichen VBA.
    Mein Z80-Disassembler kann schon NOP und DEFB Hexwert ausgeben :D

  • Auf der Seite sind ja mehrere Versionen. Der einfachste Test scheint
    mir der nach den Reg-Entries zu sein. So weit ich den Code verstanden
    habe wird unter "Software\\Microsoft\\.NETFramework\..blabla" gesucht.

    Ja, ich hab ja das Programm auch zum Laufen gekriegt und dann als ConsolenApp musste ich "nur" die Ausgabe statt in eine MessageBox per printf ausgeben.
    Mein Problem war, die gefühlt 278 Stringvarianten und dazu passende printf Varianten so zusammen zubringen, dass man diese zusammensetzen und ausgeben kann.
    Klar, ich bin total eingerostet in C++. Sowas banales wie 3 Strings (TCHAR) zusammensetzen klappte einfach nicht sofort.

  • Heute mal wieder etwas an meinem elektronischen Logbuch fürs Geocachen weiter gecodet.
    Basis: Atmega 8 - programmiere ich mit Bascom
    Angestöpselt ist ein 2x16 LCD Display und eine 4x3 Tastatur.
    Bascom ist irgendwie manchmal unlogisch ?(
    Read + Write Befehle ins Eeprom sind schon spannend :rolleyes:
    82% Flash bereits vollgestopft - ist aber fast fertig :thumbsup:


    Hucky

  • Moin !


    ich habe heute mal mein exomizer-filelist - bash-script ein bißchen erweitert.
    Für alle, die es noch nicht kennen, hier eine Kurzbeschreibung:


    ist natürlich noch erweiterbar (z.B. alle PRG's ind allen Unterverzeichnissen), aber nu funzen erstmal alle exomizer_args , die im Variablen-block stehen.

  • Ich brauchte mal eine bessere lesbare Auflistung aller Z80-Opcodes.


    Z80-Opcode.rar

    Danke, aber mit freier Software bekommt man das nicht auf Anhieb geöffnet:
    "UNRAR 4.10 freeware Copyright (c) 1993-2012 Alexander Roshal
    Z80-Opcode.rar is not RAR archive"


    ...laut hexdump befindet sich in dem Archiv eine "Z80-Opcode.xlsx", also habe ich vermutlich eh nichts verpasst. :D