Beiträge von llm

    Korrektur: nicht alle oder alte Kompiler beanstanden das nicht - ich hab gcc 13.2 und clang 17.0.6 genutzt - beide haben es gemeldet


    Clang: https://gcc.godbolt.org/z/GTKbcEPc5
    GCC: https://gcc.godbolt.org/z/db3dT5PeK (mit -Wall)
    MSVC: https://gcc.godbolt.org/z/hKKsn5Pvz (mit -Wall)

    Warning level eben immer schön hoch und Warnungen nicht ignorieren

    und nur so als Tip: du schreibst Kommentare was du geändert hast teilweise in die Dateiköpfe - nutz die doch eher für sinnvolle git Kommentare :)

    Changes und Versionen in die Dateien schreiben ist total 1985

    jeder git commit sollte einfach als kurze Info enthalten was du gemacht hast - dafür sind die da

    du hast Fehler im code


    Code
    //Try to fix the error
    if (Field.Part = 0x0C)
    Bdata.Owner = 2;  //neutral
    if (Field.Part = 0x0D)
    Bdata.Owner = 0;  //german
    if (Field.Part = 0x0E)
    Bdata.Owner = 1;  //french


    deine ifs sind mit nur = nicht == d.h. es sind Zuweisungen die immer true ergeben - d.h. deine ifs machen nur quark :) sollte eigentlich als Warnung bei deinem Kompiler raus kommen



    und der HL-Editor baut auch mit dem aktuellen Qt6.2.2

    Zitat

    Etwas testen mit einer an unterschiedlichen Stellen eingefügten Messagebox ergab dann auch, dass die 32 Bit Release-Version beim Entpacken der Dateien von History Line abschmiert.

    Also habe ich testweise mal die Größe des von "Unpack_file" per malloc reservierten Speichers erhöht uns siehe da, es läuft. Es reicht sogar ein zusätzliches Byte beim Puffer für die entpackten Daten.

    Finde das aber immernoch einen sehr merkwürdigen Fehler. Der betroffene Code läuft unter DOS und als 64-Bit Code wunderbar, nur unter 32 Bit braucht es ein zusätzliches Byte bei reserviertem Speicher.

    Das ist doch seltsam...

    find ich auch seltsam - fühlt sich an wie ein undefined-behavior-aus-dem-Weg geher das mit dem Byte - entweder schreibt der 64bit Teil über die Grenze - dann ist es undefined und "kann" funktionieren, oder der 32Bit schreibt über die Grenze und ist es eben nur zufällig besser merkbar - kann auch irgendwann ohne das Byte plötzlich wieder funktionieren - undefined-behavior=random Absturzgenerator

    ich würde den Entpacker ordentlich mit assert zukleistern und prüfen ob alle Indices usw. richtig sind


    unter Linux hab ich auch Segmentation-Fault irgendwo beim Entpacken

    baut bei mir out-of-the-box - auch unter msys2/MinGW unter Windows und läuft auch fein


    unter Linux baut es wenn man die Microsoft fopen_s durch das normale fopen ersetzt

    aber die case-sensitivität vom Linux Dateisystem spuckt noch in die Supper weil *.fin eben was anderes ist als *.FIN oder \\ und / auch nicht so sind wie unter Linux erwartet

    da fehlt eine case-insensitive suche und ein paar Funktionen um die Pfad-Sachen zu abstrahieren

    Zitat

    Das ist doch schön eine gute Grundlage und jeder von euch kann auch gerne damit weitermachen. Mein aktueller Quellcode liegt ja dabei. :)

    ist wirklich super das du den Quelltext mit veröffentlichst - Github Project wäre schon was feines - auch wenn es nur Teil-Prototypen sind - dann würde der Code auch per google gut findbar sein

    Zitat

    Mit Qt habe ich ein bisschen rumprobiert und den Mapviewer nochmal in Qt umgesetzt. Das Laden der Ressourcen direkt aus dem Spiel und das Anzeigen einer Karte funktioniert gut.

    sieht ganz gut aus - fehlt noch Scrolling und 1Mio andere Sachen - aber schon ganz fein


    Zitat

    Und dann hat mich neulich der Ehrgeiz gepackt und ich habe direkt mal einen DOS-Port davon gemacht, bzw. den Code für DOS angepasst.

    Ist das nicht eher ein Trieb als Ehrgeiz :)

    Zitat

    dass noch Einträge in der PATH Vairabe fehlten

    Zitat

    damit er die Qt DLLs findet? das würde ich nur temporär in den Path machen - eher in die Unterordner kopieren - kann man auch CMake machen lassen Habe mir daher noch die Qt Tools for Visual Studio installiert, womit ich ganz komfortabel aus Visual Studio ein neues Qt Projekt erstellen kann. Das klappt schon mal gut.

    passt soweit das kann man auch alles nachträglich mit CMake machen, das ist unproblematisch - Hauptsache du kommst erstmal damit klar

    ich hab das Game of Life Beispiel mal nur mit CMake+VS2022 ohne QtCreator gebaut

    am einfachsten Qt von https://www.qt.io/download-qt-installer-oss installieren

    also in der C:\Qt\MaintenanceTool.exe folgende Optionen zum installieren - du brauchst nur die paar sonst hast du nacher 60GB auf der Platte für tausend Sachen die man nicht braucht

    unter Linux oder Mac kann man das alles mit den Distro Bordmitteln machen - läuft so out of the box mit Ubuntu, Fedora und Suse (kein Problem wenn es dann soweit ist)



    dann bräuchtest du noch cmake - damit man mit dem VStudio, QtCreator, VisualStudio Code Projekte erzeugen, oder in der Konsole mit mingw oder linux gcc/clang arbeiten kann (was man eben möchte)


    Download | CMake



    CMake muss nicht installiert werden - man kann auch enfach die Zip-Datei irgendwo entpacken und beim erzeugen die entsprechende CMake.exe angeben (oder das CMake GUI starten)


    ich hab dann basierend auf diesem Qt CMake Tutorial: https://doc.qt.io/qt-5/cmake-get-started.html

    eine CMakeLists.txt erstellt mit der man das game of life Beispiel bauen kann


    meine CMakeLists.txt - so eine Art Studio Solution Beschreibung nur eben für viele IDEs/Compiler - CMake ist nicht perfekt aber das am stärksten sich durchsetzende Build-System


    CMakeLists.txt


    dann einfach z.B. in d:\temp


    eine


    qt_test Ordner anlegen

    in diesen https://github.com/sgelb/gameoflife.git clonen

    meine CMakeLists.txt in den gameoflife Ordner kopieren

    und noch einen __build Ordner in qt_test anlegen (wir bauen nicht inmitten unsere Quellen sondern machen ein Out-of-Source-Build damit unser Source-Code Baum sauber bleibt)


    also so



    der CMake aufruf sollte bei dir so aussehen:


    Code
    D:\temp\qt_dev\__build>cmake ..\gameoflife -DCMAKE_PREFIX_PATH=C:\Qt\5.15.2\msvc2019_64



    dann kannst du die Solution aufmachen und mit VS2022 bauen, geht aber auch genau so mit QtCreator und dann auch so unter Linux, Mac,...



    wirkt auf einen Hobby Programmierer vielleicht etwas umständlich/umfangreich aber das ist so ziemlich der Weg wie die meisten Open Source Projekte auf Github aufgebaut sind


    und wichtig: die Studio Solution Sachen werden nicht eingecheckt - also der _build-Ordner - die Studio Solution ist nur eine Sache für dich, die erzeugt du dir einmal auf deinem System und fertig

    wenn du neue Dateien hinzufuegen willst cpp,hpp usw. dann einfach die CMakeLists.txt reinschreiben und das landet dann automatisch in der Solution

    wenn ich mit einem andern Kompiler oder IDE arbeite hat die Solution keine relevanz und ist unbedeutend - also nicht einchecken :)


    für ein Linux Build unter Ubuntu 21.10 oder aktueller


    braucht man nur


    gleiche Verzeichnis-Hierary, clone und meine CMakeLists.txt und dann




    Build mit mingw-w64 mit msys2 - Windows GCC







    und noch was: das gameoflife Beispiel macht die UI im Code d.h. es wird kein UI-Editor gebraucht, ich denke das reicht für den Karten-Editor - oder willst du unbedingt mit der Maus deine Buttons und Radioboxen positionieren?

    Zitat

    Vieeleicht kennt ja jemand zufällig einen der Herren

    bisher kommen wir ja ganz gut ohne aus :)


    Anekdote von mir: Ich hab mal probiert den Engine-Entwickler von Gothic 1 oder 2 zu kontaktieren - hat damals vor Jahren nicht funktioniert, leider keine Reaktion auf meine eMails


    10 Jahre später hatte ich dann bei einem Kunden ein Projekt und einen anderen externen Entwickler als Projektpartner, nur Remote per eMail/Teams

    nach einer Weile ist mir eingefallen warum mir sein Name so bekannt vor kam - und ja er war es :)

    ich komme gerade zeitlich absolut nicht dazu dir ein kleines Qt Beispiel zu bauen aber hier ist eine kleine Game of Life implemntierung gefunden die einen Überblick verschaffen sollte:


    GitHub - sgelb/gameoflife: Conway's Game of Life, using C++ and QT5
    Conway's Game of Life, using C++ and QT5. Contribute to sgelb/gameoflife development by creating an account on GitHub.
    github.com



    am einfachsten Qt von https://www.qt.io/download-qt-installer-oss installieren


    den Qt Maintainer benutzen um Qt + QtCreator (Qt eigene C++ IDE) zu installieren (der macht auch Updates usw.), brauchst einen Account bei Qt (frei für privat und Open Source)

    dann einfach die .pro-Datei im QtCreator öffnen



    das kann man auch problemlos mit VStudio und CMake machen - wenn man weiß wie - ich versuche das am Wochenende mal vorzubereiten

    Zitat

    Und die Windows-Version braucht ja trotzdem eine Fensterklasse und es wäre ja schön, die Bitmapfunktionen von Windows zu nutzen und da nicht das Rad neu erfinden zu müssen.

    Aber natürlich wäre der Portier-Aufwand wesentlich geringer, als bei Verwenudng von Windows-Fenstern bzw. der Windows API.

    in Qt ist das alles drin, Bitmapfunktionen etc., Fenster, Dialoge, auch Multi Platform - bin gerade an einem Multiplatform Qt System bei einem Kunden - aber eben geht das DOS auf jeden Fall nicht mehr

    vielleicht also doch nur eine Desktop Version

    Zitat

    Danke. Hmmm, dann wäre ja 286er Unterstützung doch schon schön...

    also doch eine selbgemalte Oberfläche - dann lieber nur die und die dann auch unter Windows/Linux

    so wie der Stunts-Editor:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.