Seltsame Fehlermeldung
-
Hallo,
also erstmal danke für eure Hilfe. Ich habe den Code jetzt erstmal auf unter 65.000 Zeilen gedrückt. Nun kommt aber immernoch die Fehlermeldung... Also scheints daran anscheinend auch nicht gelegen zu haben. Und ohne jetzt auch den ganzen Text umschreiben zu müssen. Gibt es da nicht andere Kompilierer mit denen ich den Text kompilieren kann?
gruß Schnebs
-
Ach mist, was vergessen.
Wie geht das genau mit dem "Text auslagern"? Kann mir das vll jemand näher erklären?gruß Schnebs
-
hast du mal RandomAccess85 und Akaris Vorschlag versucht?
[Edit]
Menu -> Datei -> Neu -> Unit
dann z.b. eine komplette ButtonClick-Methode aus deiner Haupt-cpp in die neue Unit schieben (einschließlich Funktionskopf)
die neue Unit speichern
dann in der alten Unit einfügen (ganz oben)#include "name-der-neuen-unit.h"
und dann sollte das gehen
allerdings mußt das mit einigen Funktionen machen...
noch etwas: was du da machst nennt man übrigends Fleißarbeit, hat aber leider nicht viel mit programmieren zu tun
[Edit2]
naja, ok, ganz so einfach ist es nicht, da du haufenweise globale Variablen verwendestdie ganze Variablen vom Anfang deiner Unit mußt du mal in die Header-Date verschieben
dann in der neunen Unit einfügen (ganz oben)
#include "name-der-alten-unit.h"
-
So, habe nun das meiste in eine 2te Datei ausgelagert und die Fehlermeldung ist weg. Nun ist, wie gesagt, das Problem, dass die, in der ersten Datei bereits geänderten Variablen, nicht in der 2ten Datei sind. Also, ich kann die Variablen deklarieren aber sie ändern sich halt nicht bzw, die 2te Datei bekommt davon nichts mit. Wie kann ich das ändern?
gruß Schnebs
-
Linnea schrieb:
[Edit2]
naja, ok, ganz so einfach ist es nicht, da du haufenweise globale Variablen verwendestdie ganze Variablen vom Anfang deiner Unit mußt du mal in die Header-Date verschieben
dann in der neunen Unit einfügen (ganz oben)
#include "name-der-alten-unit.h"
-
Mhhh ich frage mich nur gerade warum du krampfhaft versuchst, Unsinn zum laufen zu bekommen...
Versuch doch mal, nicht den BCB so zu manipulieren, das er deinen Code frisst, sondern den Code so zu ändern, das er "gut" ist.Beispiele:
Die globalen Variablen (das ab Zeile 10) die du hast, könnten z.B. in eine GameController-Klasseclass GameController { String Server; int ErrorCode; int Schwertkaempfer ; int Kaserne11; int Baeckerei11; int Baeckerei22; int Holzfaeller11; int Holzfaeller22; int Nahrung; int Holz; int Muehle; int Markt; int BauplatzA[19]; }
Wissenschaft präsentiert: Klassen und Arrays... Viel Spass beim Nachbauen.
Allein durch die Benutzung von Arrays, Schleifen und Objekte die mehrere Eigenschaften zusammenfassen wirst du deinen Quelltext auf bestimmt 5000 Zeilen verringern können.mfg
xXx
-
Mhhh ich frage mich nur gerade warum du krampfhaft versuchst, Unsinn zum laufen zu bekommen...
Weil ich den Unsinn nicht groß umschreiben will. Ich mache jetzt so weiter wie ihr mir gesagt habt. Aber ich will erstmal das alte zum Laufen bringen. Ich will nämlich nicht viel Zeit aufwänden, für Sachen, die eigl schon fertig sind.
-
aber dein Programm ist doch noch garnicht komplett fertig und wenn du so weiter machst hast du zum Schluß ca. 200000 Zeilen Quellcode und blickst nicht mehr durch
warum vereinfachst du nicht mit ein paar Funktionen das Quellcodeschreiben, z.B. Quellcodestücke die immer wieder in ähnlicher Form auftreten:
if (Holz >= 20) if (Nahrung >= 20) if (Bauplatz1a == 2) if (Ausgewaehlt == 2) { Bauplatz1->Width = 81; Bauplatz1->Height = 105; Bauplatz1->Picture->LoadFromFile ("graphics\\mühlebaustelle.bmp"); } if (Holz >= 20) if (Nahrung >= 20) if (Bauplatz2a == 2) if (Ausgewaehlt == 2) { Bauplatz2->Width = 81; Bauplatz2->Height = 105; Bauplatz2->Picture->LoadFromFile ("graphics\\mühlebaustelle.bmp"); } ...
ist doch eigentlich immer das gleiche, außer daß das Bauplatz-Image und die Bauplatz-Variable sich ändert, also mach doch einfach ne Funktion:
void TForm1::NewBauplatz(TImage *BauplatzImg, int Bauplatz) { if ( (Holz >= 20) && (Nahrung >= 20) && (Bauplatz == 2) && (Ausgewaehlt == 2) ) { BauplatzImg->Width = 81; BauplatzImg->Height = 105; BauplatzImg->Picture->LoadFromFile ("graphics\\mühlebaustelle.bmp"); } } //Aufruf NewBauplatz(Bauplatz1, Bauplatz1a); NewBauplatz(Bauplatz2, Bauplatz2a); ...
und schon sinds mind 1500 Zeilen weniger, vorallem wenn du diese Funktion mit einem Enum und einem Switch noch für alle Haustypen machst, und wenn du dann einen Haustyp hinzufügst ist der neue Quellcode kurz und übersichtlich
wenn du dann noch die Bauplätze in ein Array packst kannst du den Aufruf einfach in einer Schleife abarbeiten
-
Moin nochmal,
So... Ich habe den Text jetzt nach vielen Optimierungen auf 35.000 zeilen verringert. Nun habe ich noch eine Frage (Ich wollte nicht extra einen neuen Thread aufmachen)... Und zwar: Mein Programm ist ja eine Art Spiel. Nun brauch ich noch eine KI. Der Gegner soll auf einer Fläche von 60 Feldern mit seinen Einheiten hinter meine Einheiten kommen und Angreifen... Wie bekomme ich so etwas am besten hin? Mit einem Min-Max-Algorithmus?
gruß Schnebs
-
Hallo
Du solltest aber einen neuen Thread aufmachen. Und wenn es dir erstmal nur ums Prinzip der KI geht, dann sogar besser im rudpf. Selbst im Spieleforum wirst du mehr Leute finden die sich mit sowas auskennen.
bis bald
akari
-
Ok, danke.