Seltsame Fehlermeldung
-
Am Quelltext scheints auch nicht zu liegen... Weil wenn ich ganz früh im Text einen Haltepunkt markier, also quasi weniger Text habe, kommt trotzdem die Fehlermeldung. Aber am Projekt selbst scheints trotzdem zu liegen, denn bei allen anderen Projekten funktioniert alles...
Nochmal zu Info: Der Fehler kommt beim Linken.gruß Schnebs
-
Schnebs schrieb:
Nochmal zu Info: Der Fehler kommt beim Linken.
Da nütz dir auch ein Haltepunkt nix...
versuch mal den Fehler einzugrenzen:
Variante 1:
kommentier allen Quellcode innerhalb von Funktionen aus, dann versuch zu compilieren,
wenn der Fehler nicht mehr kommt, kommentier pro Funktion den Quellcode wieder ein und compilier dazwischen immer wieder bis du den entsprechenden Quellcodeabschnitt gefunden hast wo der Fehler auftritt,
wenn der Fehler trotzdem noch vorhanden ist -> Variante 2 oder 3Variante 2:
mach ein komplett neues Projekt und füge den Quellcode stückchenweise wieder hinzu, nach jeder Funktion wieder compilieren, wobei es hierbei zu Fehlern durch noch fehlende Funktionen kommen kann,
die Komponenten kannst du ja aus dem alten auf das neue Form kopierenVariant 3:
lad den Quellcode einschließlich aller benötigten Datei irgendwo hoch und poste den Link, allerdings nicht als exe oder rar, und dann schaut wahrscheinlich mal jemand drüberich weiß, das ist ziemlich viel Quellcode, aber irgendwie willst du ja weiterkommen, oder nicht?
[Edit] von welcher BCB-Version reden wir hier eigentlich?
-
Hallo,
habe jetzt den Ordner als .rar hochgeladen.
http://www.filefront.com/14148795/projekt.rar
Wir reden von Version 6.
gruß Schnebs
-
Hatte der BCB6 nicht Probleme mit mehr als 65000 Zeilen in einer Datei?
Ich hätte nie gedacht, das jemand wirklich diese Grenze ausreizt...mfg
xXx
-
Echt? Ist das so?? Wenn ja dann ist das blöd.... Gibts da denn Alternativen? Weil, ich hab ziehmlich viel Zeit und Arbeit da reingesteckt...
gruß Schnebs
-
Hallo
Falls du wirklich 70.000 Zeilen in einer einzelnen Quellcode-Datei hast...
dann verteile diese Zeilen in verschiedene neu anzulegende Dateien. Dazu must du nur den Menüpunkt "Datei/Neu..." aufrufen und in der folgenden Liste "Unit" auswählen. In den neuen Units erstellst du dann sinnvolle Unterfunktionen, in die du den Code auslagerst.bis bald
akari
-
-=]xXx[=- schrieb:
Hatte der BCB6 nicht Probleme mit mehr als 65000 Zeilen in einer Datei?
Ich hätte nie gedacht, das jemand wirklich diese Grenze ausreizt...mfg
xXxTatsächlich, jetzt wo du das sagst, kann ich mich sogar dunkel an einen Thread hier im Forum erinnern...
Versuch doch mal deienn Code zu splitten und ihn auf mehrere Dateien aufzuteilen! Vielleicht war das auch die Botschaft der seltsam übersetzen Website, die du gepostet hast
Da stand doch irgendwas von "großes Papier" und nun "zerteilt"?!
LG, Micha
-
Also wenn ich mir den Quelltext mal so überfliege, täten einige Grundlagenkenntnisse bestimmt nicht weh... Angeblich soll es sowas wie Arrays (vector) geben, Klassen, Objekte, Design Pattern (MVC) etc..
Ich hab selten mal Dateien die signifikant über 1000 Zeilen haben
mfg
xXx
-
-=]xXx[=- schrieb:
Also wenn ich mir den Quelltext mal so überfliege, täten einige Grundlagenkenntnisse bestimmt nicht weh...
Genau!
@Schneps: Die QuellZeilen aus deinem Eingangspost könnten z.B. eine Schleife vertragen... ;o)
MfG
-
Hi,
um die Herkunft der Fehlermeldung etwas zu erhellen; nach einer Volltextsuche im Verzeichnis des BCB6 nach
import.cpp findet sich in der ilink32.dll als auch ilink32.exe :StringBlock Type names External types Public types SegRelocs Line number cache OBJ symbols Import symbols Publics Public GSX Extdefs Extdef flags Virdefs Config [b]C:\src\ilink\import.cpp[/b] BlockIndex >= 0 && BlockIndex < sizeof(MemConfig) / sizeof(MemConfig[0]) Config->CurrentSize >
-
ich kann -=]xXx[=- nur zustimmen, außerdem fehlt eine ordentliche Einrückung und die if-Bedingungen kann man mit ODER (||) oder UND (&&) zusammenfassen
ich schätze mal mit Arrays, Klassen, ordentlichen Schleifen und Abfragen in seperaten Funktionen kann man den Quellcode glatt halbieren...
-
Linnea schrieb:
[...]
ich schätze mal mit Arrays, Klassen, ordentlichen Schleifen und Abfragen in seperaten Funktionen kann man den Quellcode glatt halbieren...
Oder anders herum: Wenn ich meine Quelltexte in aneinandergereihte Anweisungen "auflösen" würde, wäre der Quelltext - geschätzt - 10mal so lang!
-
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