Themabewertung:
  • 1 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Reverse Engineering der NLT II
#21
Wie hast du Visual Studio 2017 Community Edition genau eingerichtet? Ich habe es selbst versucht, aber leider kommt es zu Fehlermeldungen. Ich habe eigentlich alles so eingerichtet, wie ich es von der 2008er Version kenne...

Ich habe die vorkompilierte Version 1.2.15 von SDL verwendet und keine selbst kompilierte. Könnte da der Fehler liegen?
Fehlermeldung zum Beispiel:

Code:
Schweregrad    Code    Beschreibung    Projekt    Datei    Zeile    Unterdrückungszustand
Fehler    C1083    Datei (Include) kann nicht geöffnet werden: "stdlib.h": No such file or directory    dosbox    C:\ObiWahn\Bright-Eyes\Bright-Eyes 2017\Bright-Eyes 2017\src\custom\schick\rewrite_g105de\g105de_seg000.cpp    1
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Zitieren
#22
(07.10.2017, 15:16)Obi-Wahn schrieb: Wie hast du Visual Studio 2017 Community Edition genau eingerichtet? Ich habe es selbst versucht, aber leider kommt es zu Fehlermeldungen. Ich habe eigentlich alles so eingerichtet, wie ich es von der 2008er Version kenne...

Ich habe die vorkompilierte Version 1.2.15 von SDL verwendet und keine selbst kompilierte. Könnte da der Fehler liegen?
Fehlermeldung zum Beispiel:

Code:
Schweregrad    Code    Beschreibung    Projekt    Datei    Zeile    Unterdrückungszustand
Fehler    C1083    Datei (Include) kann nicht geöffnet werden: "stdlib.h": No such file or directory    dosbox    C:\ObiWahn\Bright-Eyes\Bright-Eyes 2017\Bright-Eyes 2017\src\custom\schick\rewrite_g105de\g105de_seg000.cpp    1

Die vorkompilierte SDL hat bei mir einen Linker-Fehler verursacht (irgendetwas mit fprintf oder so). Deine Fehlermeldung hier spricht eher dafür, dass entweder kein Windows SDK installiert ist (und somit die C-Standardbibliothek fehlt) oder dass die Includepfade nicht vollständig sind (halte ich für wahrscheinlicher). Versuche mal bitte, ob Du die "stdlib.h" irgendwo findest (vermutlich unter "C:\Programme (x86)"). Falls nicht musst Du vermutlich den VC-Installer noch einmal starten und das Windows-SDK nachinstallieren. Es müsste aber eigentlich da sein, sofern Du bei der Installation die C++-Desktopentwicklung ausgewählt hast.

Die Pfade werden im gegensatz zu VS2008 nicht mehr im Menü unter "Extras->Optionen" gesetzt, sondern in den Projekteigenschaften. Bei mir habe ich beim Includepfad und dem Bibliothekspfad nur die entsprechenden Pfade zu SDL 1.2.15 hinzugefügt. Es steht dort bei mir also "D:\Bright Eyes\SDL-1.2.15\include;$(IncludePath)" bzw.  "D:\Bright Eyes\SDL-1.2.15\VisualC\Release;$(LibraryPath)" in den entsprechenden Zeilen. Wenn ich hier das "$(IncludePath)" lösche bekomme ich u.A. Deine Fehlermeldung (neben vielen anderen  fehlenden Standardheadern).

Zur Einrichtung:
Nach der Installation von Visual Studio hatte ich einfach das 2008er Projekt geöffnet und habe es umwandeln lassen. Danach habe ich die auftretenden Probleme behoben. Dazu musste ich folgende Einstellungen und Änderungen vornehmen:
  • SDL Kompilieren (Ich meine, dass ich hier einfach das Projekt umwandeln und erstellen konnte. Die einzigen Änderungen, an die mich erinnere, waren die Ausgabepfade, die ich angepasst habe, was aber nicht wirklich notwendig ist. Wenn das bei dir nicht klappt, schaue ich mir das noch einmal an).
  • Include- und Bibliothekspfade setzen (siehe oben)
  • Die Windows SDK-Version (Projekteigenschaften->Allgemein) stand standardmäßig auf 8.1, was bei mir aber nicht installiert war. Ich konnte aber einfach die installierte Version (10.0.15063.0) auswählen.
  • In der Datei "src\ints\int10_vesa.cpp" in Zeile 42 muss ein Leerzeichen vor "VERSION" eingefügt werden. (Es hat sich wohl etwas bei der Auswertung von Zeichenketten geändert).
  • Die Datei "src\custom\schick\rewrite_m302de\datseg.cpp" muss entweder vom Build ausgeschlossen werden (im Projektmappenexplorer Rechtsklick auf die Datei, dann "Eigenschaften", dann bei "Vom Build ausgeschlossen" auf "Ja" setzen) oder die entsprechende "#include"-Anweisung in "src\custom\schick\rewrite_m302de\seg002.cpp" muss raus.
  • In den Projekteinstellungen fehlt ein Dateiname für die .pdb-Datei. Die einfachste Lösung besteht darin, in den Projekteigenschaften unter Linker->Debuggen bei "Programmdatenbankdatei erstellen" die option "Vom übergeordneten Projekt erben"  auszuwählen.
Für das Debuggen habe ich dann noch folgendes eingestellt (in den Projekteigenschaften unter Debugging):
  • Befehlsargumente: Argumente für den Start von Dosbox, also z.B. Angabe einer .conf-Datei. (Hier habe ich mehr oder weniger den Aufrauf aus der .bat-Datei der Heldenedition übernommen)
  • Arbeitsverzeichnis: Hier habe ich den installationsordner der Heldenedition gewählt.
  • Umgebung: "SDL_VIDEODRIVER=windib" (verhindert die Probleme mit der langsamen Maus).
Wenn du möchtest, kann ich Dir auch meine Projektdateien (.sln, .vcxproj und .vcxproj.filters) zur Verfügung stellen (dann müsstest du nur die Pfade anpassen und das eine Leerzeichen einfügen).
Zitieren
#23
Danke! :) Es war die Windows SDK-Version. Obwohl ich die Version 8.1 nachinstalliert hatte, brachte erst die Umstellung auf 10 den Erfolg. Die anderen Änderungen habe ich zum Teil nachvollzogen, habe aber andere Fehler hervorgerufen. Da warte ich lieber auf HenneNWH, mal gucken, was er zu der ganzen Sache sagt. ;)
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Zitieren
#24
Was kommen denn jetzt für Fehlermeldungen? Wenn es nur Probleme mit der Entwicklungsumgebung sind, kann ich vielleicht auch helfen. Allerdings muss ich gleich weg und kann wahrscheinlich erst gegen 9 oder 10 Uhr wieder hier reinschauen.
Zitieren
#25
Guten Morgen,

kurzes Update von mir: Ich habe mich gestern ein wenig mit dem Absturz beim Fragen nach den Informanten in Tavernen beschäftigt. So wie es aussieht, fehlt an der Stelle einfach nur ein "Real2Host" um den Aufruf von get_informer_hint() (seg060.cpp in Zeile 122).

Ich schaue heute abend mal, ob vielleicht ein paar der anderen Probleme, die ich hatte, auch durch sowas entstehen. Danach sollte ich mich mal drum kümmern meine Änderungen in irgendeiner Form zugänglich zu machen. Es könnte sein, dass ich dann mal ein wenig Git(Hub)-Nachhilfe brauche.

Ich habe hier schön öfter etwas von Pull-Requests gelesen, und die scheinen ja dafür gedacht zu sein Änderungen vorzuschlagen (richtig?). Dafür brauche ich aber vermutlich einen GitHub Account, oder? Kann ich dann so einen Pull-Request (wenn die den richtigen Weg dafür darstellen) aus einem lokalen Repository starten, oder muss ich erst das gesamte Projekt in ein eigenes GitHub Repository kopieren?

Und wäre es möglicherweise besser bzw. höflicher zu warten, bis Henne hier mal wieder reingesehen hat, damit er weiß, dass da etwas von mir kommen wird? (Das bereitet mir doch ein wenig Sorgen, dass ich möglicherweise ein wenig gegen die Etikette verstoßen könnte...)
Zitieren
#26
Cool, dass du Bock hast, dich in dieses Projekt einzubringen :)

Genau: ein Pull Request (PR) wäre das Mittel der Wahl, um Änderungen vorzuschlagen. Ja, dafür benötigst du einen Github-Account, und ja, du müsstest in Github einen Fork erstellen (ein einfacher Klick auf den Fork-Knopf) und dann von deinem lokalen Git einen Push dorthin machen (möglicherweise ein bisschen komplizierter als ein einfacher Klick, aber hält sich in Grenzen). Anschließend hast du die Möglichkeit, über das Github-Interface einen PR zu erstellen (ein Klick). Henne kann dann in Ruhe inspizieren, was du geändert hast, und eventuell mit dir darüber diskutieren. Anschließend ist es für ihn wieder nur ein einfacher Klick, die Änderungen zu akzeptieren ("merge").

Mit der Verwendung von Git unter Windows habe ich keine Erfahrung. Vielleicht könnte jemand anders hier ein bisschen Hilfestellung geben, wie man dort am leichtesten Commits erstellt und auf ein remote repository pusht? Vielleicht gibt's da einfache grafische Lösungen?

Nachtrag: Achso, mit dem Pull Request musst du nicht warten, bis Henne hier wieder reinschaut. Der PR liegt dann halt eine Weile auf Github. Unhöflich ist das garantiert nicht, keine Sorge.
Zitieren
#27
Es gibt den Github Windows Client. Der sieht ganz schick aus und ist für einfache Aufgaben gut geeignet. Ob man damit schnell einen PR machen kann, weiß ich aber nicht. Bin wieder zur CLI zurück, da geht einfach mehr...
Zitieren
#28
(10.10.2017, 08:22)Mirko schrieb: Und wäre es möglicherweise besser bzw. höflicher zu warten, bis Henne hier mal wieder reingesehen hat, damit er weiß, dass da etwas von mir kommen wird? (Das bereitet mir doch ein wenig Sorgen, dass ich möglicherweise ein wenig gegen die Etikette verstoßen könnte...)

Ich bin mir sicher, dass Henne auch hier reinschauen wird. Vor allem, wenn ein ihm unbekannter Request  kommt. Immer schön weiter machen mit dem Regentanz, irgendwann kommt Henne mal wieder vorbei. :P

Bei Interesse kann ich dir auch ein Konto auf  https://bright-eyes.obiwahn.de einrichten. Dort kannst du Erkenntnisse und Entdeckungen eintragen.
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Zitieren
#29
Danke für die Infos. Ich werde mir noch ein paar Dinge anschauen und mich dann am Wochenende mit GitHub beschäftigen. Visual Studio hat inzwischen scheinbar ein paar Git-Features eingebaut. Ob das ausreicht werde ich dann sehen. Das Kommandozeilen-Tool habe ich aber schon installiert.

Und Danke für das Angebot mit dem Wiki-Zugang. Momentan habe ich aber noch nichts dokumentierwürdiges gefunden. Ich werde darauf zurückkommen, falls sich das ändert :).
Zitieren
#30
Hallo mal wieder!

Ich habe jetzt mal meine Änderungen bei GitHub hochgeladen (https://github.com/mirbo/Bright-Eyes/), aber noch keine Pull-Requests erzeugt. Ich vermute, dass ich als Git-Noob etwas falsch gemacht habe, es sieht nämlich so aus, als könnte ich meine Änderungen nicht mehr in verschiedene Pull-Requests aufteilen. Das wäre mir eigentlich lieber gewesen, weil die eigentlichen Commits unabhängig voneinander sind und das dann für Henne vermutlich einfacher wäre. Vermutlich hätte ich alles in einem jeweils eigenen Branch machen müssen. Hat jemand eine Idee ob ich das noch lösen kann? Beim letzten Commit habe ich leider die .gitignore mit hochgeladen, was ich so auch nicht geplant hatte. Im Notfall lege ich das alles einfach noch einmal neu an (so viel ist es ja nicht gewesen).

Folgende Änderungen habe ich in meinen Fork gepusht:
1. Ich habe meine VS2017 Projektdateien bereit gestellt. Hier fehlt ggf. noch eine Art Readme, wo drinsteht, was jeder noch selbst machen müsste, um es zu nutzen (SDL kompilieren, Include- und Lib-Pfade setzen, ggf. bei den Debug-Einstellungen die Pfade anpassen).
2. Der Characktergenerator stürzt nicht mehr ab, wenn man bei der Eingabe neuer positiver Eigenschaften die rechte Maustaste drückt.
3. Der Absturz, der auftrat, wenn ein Wirt Hinweise zum Wohnort eines Informaten geben wollte, wurde behoben.
4. Ich hatte Probleme festgestellt wenn man beim Odem Arcanum die Auswahl des Gegenstandes abbricht, die nun nicht mehr autreten sollten. Der selbe Fehler ist auch im Analüs drin, den ich ebenfalls entsprechend abgesichert habe. Da es sich hier (vermutlich) um Originalbugs handelt, habe ich die Änderungen auch entsprechend über ein #ifdef abgesichert.

Beim Odem Arcanum hatte ich schon mal eine komplizierte Lösung erwähnt, habe mich aber nun doch für eine einfache Variante entschieden (eine abbgebrochene Auswahl oder leeres Inventar setzt den Ausgabetext auf leer und springt aus der Funktion). Beim Analüs wird einfach der Standardtext ausgegeben ("Ich kann nichts besonderes erkennen") und die Suche nach einem passenden Gegenstand in der Liste der anlysierbaren Gegenstände übersprungen. Ich vermute übrigens, dass die Originalumsetzung dazu führen kann, dass sich an diesen Stellen ein bestimmter Zauberfertigkeitswert verändert, wenn die Voraussetzungen stimmen.
Zitieren
#31
Kein Problem, Branches kannst du nachträglich setzen: Auf der Github-Seite deines Repositorys klickst du auf "7,370 Commits" und dann auf die Schaltfläche "< >" rechts neben dem Commit, zu dem du gerne einen Branch hättest. Dann steht links neben der Schaltfläche "New pull request" etwas von "Tree: ....". Hier klickst du drauf und gibst den Namen des neuen Branches ein, den du anlegen möchtest. Mit der Eingabetaste bestätigen - fertig!
Zitieren
#32
Danke, ich probiere es nachher (oder morgen) mal aus.
Zitieren
#33
Ups, nach meiner obigen Anleitung würden deine branches natürlich immernoch aufeinander aufbauen. Du wolltest sie ja unabhängig voneinander und relativ zu Hennes Repository. Das machst du in deinem lokalen Clone deines Github-Repositorys. Und zwar so:

Code:
git branch vc2017 HEAD~3
git branch g105de_rightmouse HEAD~2
git branch m302de_informerhints HEAD~1
git branch m302de_indexcalc HEAD
git checkout m302de_indexcalc
git branch -f bright_eyes HEAD~4
git checkout bright_eyes
git rebase --onto bright_eyes m302de_informerhints m302de_indexcalc
git rebase --onto bright_eyes g105de_rightmouse m302de_informerhints
git rebase --onto bright_eyes vc2017 g105de_rightmouse

Dann kannst du das ganze noch zu deinem Github-Repository pushen. Wenn "mirbo/Bright-Eyes" bei dir lokal "origin" heißt, dann sieht das so aus:

Code:
git push -f origin bright_eyes
git push origin vc2017
git push origin g105de_rightmouse
git push origin m302de_informerhints
git push origin m302de_indexcalc

Fertig.
Zitieren
#34
Wow! Vielen Dank, das hat funktioniert! Dann schaue ich jetzt mal, wie das mit den Pull-Requests läuft.

Edit: So, jetzt hab ich auch die Pull-Requests erzeugt.
Zitieren
#35
Na, wenn das Henne nicht zurück lockt!   :up: :wave:
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Zitieren
#36
Ich habe heute noch etwas gefunden und einen weiteren Pull-Request erzeugt. Die Marbo-Rätsel-Kiste scheint im Original sehr stark "verbugt" gewesen zu sein. Henne hatte dort schon ein paar Fehler behoben, und jetzt war es möglich den Schlüssen mehrfach aus der Kiste zu nehmen.
Zitieren
#37
Hmm... Ich hatte in den letzen Versuchen (schon ein paar Tage her) Abstürze bei einem Kampf im Tempel des Namenlosen (im Raum mit dem Altar), ich meine als einer der Priester dran war (auf jeden Fall aber während der Gegner am Zug war). Es schien mit einer uninitialisierten Variable zusammenzuhängen, aber leider habe ich mir nicht gemerkt, an welcher Stelle im Code das war, es war aber (glaube ich) irgendwas mit der Richtung. Heute konnte ich den Absturz leider nicht wieder provozieren.

Ich kann mich dran erinnern gelesen zu haben, dass es mit Priestern schon mal Probleme gab. Ich meine aber, dass Henne das Problem damals behoben hatte, also ist das hier vielleicht was anderes.

Was mir in dem Kampf noch aufgefallen ist: Die Priester zaubern teilweise in die falsche Richtung, also um 90 oder 180 Grad versetzt. Bei Erfolg fliegt der Zauber dann auch entsprechend verkehrt vom Priester weg, die Trefferanimation wird aber trotzdem auf dem richtigen Ziel angezeigt.

Ich versuche am Wochenende mal, ob sich der Absturz noch einmal wiederholt.

Edit: Jetzt hab ichs noch einmal geschafft, den Absturz zu bekommen. Falls jemand anders mitsuchen möchte: Die Funktion heißt "FIG_backtrack" in seg038.cpp und die uninitialisierte Variable, die ich weiter oben erwähnt habe, heißt "found_dir". VC++ markiert den Speicher von nicht initialisierten Variablen in Debug-Builds (bei bestimmten Compiler-Einstellungen) mit 0xcc-Byte und die Variable hatte beim Absturz den Wert 0xcccc, wurde aber trotzdem als Array-Index verwendet (Zeile 263). Für heute mache ich erst einmal schluss, aber ich schau mir das am Wochenende noch einmal genauer an.
Zitieren
#38
Sehr cool, dass du da dran bleibst! Weiter so :ok:
Zitieren
#39
Ich muss leider sagen, dass ich nicht wirklich verstehe, was an dieser Stelle passiert. Kennt jemand diese Funktion (siehe Edit in meinem letzten Post) etwas genauer? Ich vermute, sie berechnet den kürzesten Weg zwischen der aktuellen Position und einem Zielort (zumindest wird sie auch immer dann aufgerufen, wenn ich einen meiner Helden bewegen möchte und ich den Zielpunkt verschiebe).

Irgendetwas scheint hier bei den Priestern aber manchmal nicht zu klappen. Ich habe inzwischen auch das Gefühl, dass der Absturz dann auftritt, wenn der Priester gerade auf ein Feld neben einem Kultisten tritt, aber irgendwie auch nicht immer. Meine aktuelle Theorie ist, dass die KI versucht auf ein Feld zu kommen, um einen Zauber auf einen meiner Helden zu wirken (weiß jemand, wo ich das ggf. auslesen könnte, was der aktuelle Plan der KI ist?), nur dass der weg dorthin in irgendeiner Form von einem anderen Gegner blockiert ist.

Edit:
Ich habe gerade etwas neues herausgefunden. Und zwar scheint es so zu sein, dass die Funktion FIG_backtrack() mit Werten für target_x und target_y aufgerufen wird, die identisch sind mit den Werten x_in und y_in der aufrufenden Funktion seg038(). Ich vermute daher, dass die Funktion in diesem Fall einen Weg von der aktuellen Position zur aktuellen Position berechnen soll, was dann nicht klappt. Leider sind das immer noch nur Vermutungen, weil ich immer noch nicht verstehe, was dort in diesen Funktionen genau vor sich geht ;).

Edit2:
Das letzte war leider falsch. Die Parameter waren zu dem Zeitpunkt schon innerhalb der Funktion geändert worden. Die ursprünglichen Koordinaten scheinen aber auf ein belegtes Feld zu zeigen...
Zitieren
#40
Hier mal wieder ein kleines Update meinerseits, nachdem ich mich jetzt eine Weile mit dem Kampfsystem beschäftigt habe.

1. Ich habe den Grund für den Absturz gefunden, lag allerdings mit meiner ursprünglichen Vermutung etwas daneben. Der Absturz trat immer dann auf, wenn sich die KI dazu entschieden hatte einen Zauber mit Nahkampfreichweite auf einen anderen Gegner zu sprechen, und die nächste mögliche Position, um das durchzuführen, das Feld links oberhalb des Ziels war. Nachdem der Zauber ausgesucht wurde, prüft die KI zunächst ob ein mögliches Ziel in Nahkampfreichweite steht. Ist dies der Fall, so wird es als Ziel festgelegt und die "Planungsphase" beendet. Wenn kein Ziel gefunden wird, berechnet die KI einen Weg zu einer anderen Figur und bewegt den Zaubernden dorthin. Daraufhin wird die Prüfung auf ein mögliches Ziel wiederholt (das ganze Vorgehen läuft in einer Schleife). Die Prüfung auf ein Ziel läuft eigentlich so ab, dass nacheinander alle vier Nachbarfelder betrachtet werden. An dieser Stelle gab es aber einen Fehler (vermutlich ein Tipp- oder Copy-and-Paste-Fehler), so dass das Feld rechts unten nicht und dafür ein anderes doppelt geprüft wurde. Dadurch wird die Wegfindung noch einmal angestoßen und kommt nicht damit klar, dass die Figur schon am richtigen Ort steht (=> Crash). Um das zu beheben müssen zwei Werte in seg037.cpp in den Zeilen 447 und 448 getauscht werden (x = 1; y = 0; statt andersherum). Der Fehler ist vermutlich bisher nicht aufgefallen, weil er in einem Block liegt, der nicht für den Borland-Compiler gedacht ist und somit zu keinen Problemen beim Binärvergleich führt.

2. Auch den Grund für das Zaubern in die falsche Richtung habe ich gefunden. Auch hier ist es ein vermutlicher Copy-Paste-Fehler in einem Block, der nicht für den Borland-Compiler gedacht ist. In diesem Fall versagt die Richtungsberechnung, weil eine X-Koordinate mit einer Y-Koordinate überschrieben wird. Es passiert hier aber nichts schlimmeres, da mit den Werten nur Größenvergleiche durchgeführt werden. Der Fehler liegt in seg44.cpp in Zeile 756 (hier müsste y_target geschrieben werden).

3. Ich habe ein paar Statusbits identifiziert, die von Beherrschungs oder Verwandlungszaubern bei den Gegnern oder Helden gesetzt werden, und bisher noch unbekannt oder zumindest unbenannt waren. Ich verwende hier mal die Bezeichnungen der Zugriffsfunktionen aus v302de.h:

- hero_unkn3: Held ist verängstig und wird fliehen (Horriphobus).
- enemy_bit8: Gegner ist besänftigt und wird nicht mehr angreifen (Bannbaladin, Herr der Tiere oder Sanftmut (ruft intern Herr Der Tiere auf)).
- enemy_bit10: Gegner ist verängstig und wird fliehen (Horriphobus).
- enemy_bit11: Gegner tanzt (Zwingtanz).

4. Gibt es eigentlich irgendwelche Gegner, die (ohne übers Debugging nachzuhelfen) einen Bannbaladin oder Bösen Blick zaubern? Beide sind zwar als Gegnerzauber implementiert, funktionieren aber meiner Meinung nach nicht. Beim Bannbaladin kommt zwar eine Ausgabe, dass mein Held nicht mehr angreifen wird, aber spürbare Auswirkungen hatte das nicht. Das gesetzte Bit wird scheinbar im Kampf nicht ausgewertet. Der Böse Blick hat ein anderes Problem. Der Held soll dann ja eigentlich die eigene Gruppe angreifen und die KI-Routinen sind auch entsprechend programmiert. Das gesetzte Bit sorgt aber gleichzeitig dafür, dass der Zug des entsprechenden Helden einfach abgebrochen wird. Getestet habe ich das, indem ich auf einen Angriffszauber von einem Priester gewartet habe (Break-Point) und dann den Funktionszeiger für die Spruchbehandlung umgeändert habe, so dass stattdessen die Wirkung eines der beiden Sprüche eintritt. Wenn es Gegner gibt, das die Sprüche auf natürlichem Wege sprechen, würde ich das gerne noch einmal so überprüfen (wäre sauberer).

Ich habe bei mir lokal jetzt auch ein paar Funktionen und Variablen umbenannt und noch ein paar Werte durch benannte Konstanten (#define ....) ersetzt um das ganze etwas lesbarer zu machen. Hochgeladen hab ich das aber noch nicht, weil ich hoffe am Wochenende vielleicht noch ein bißchen mehr in der Richtung zu schaffen (vorausgesetzt ich verstehe die Funktionen). Dazu habe ich aber auch nochmal Fragen: Würde es den Binärvergleich stören, wenn ich Funktionen oder Variablen umbenenne?
Zitieren




Benutzer, die gerade dieses Thema anschauen: 7 Gast/Gäste