![]() |
Quelltextbegrenzung (Quellcode zu lang??)
Hallo,
ich programmiere mit Delphi 7 und ich habe einen Quelltext, der knapp 30.000(!!) Zeilen lang ist. Nun ist mir aufgefallen, dass sobald ich noch etwas anfüge, ich nicht mehr überall meine Haltepunkte setzen kann und der Debugger nicht mehr richtig funktioniert (springt die gesetzten Haltepunkte nicht mehr an). Sobald ich den zuletzt angefügten Quelltext wieder entferne, kann ich wieder überall Haltepunkte setzen und diese werden auch wieder korrekt angesprungen. Wenn ich diesen Bug(?) nun vernachlässige und lustig weitercode geht es irgendwann soweit, dass das Prog zur Laufzeit an den unsinnigsten Stellen mit Exceptions aussteigt und wenn ich die einzelnen Prozeduren mit F7 durchgehen will, springt der Debugger wahllos in den Zeilen umher. Kann es daran liegen, dass der Quelltext einfach viel zu lang ist? Oder stimmt was mit dem Delphi nicht und ich muss neu installieren? Vielen Dank für eure Hilfe! |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Ich kann mich nicht erinnern, daß nur Aufgrund eines langen Quelltextes mein D7 durchdrehte.
|
Re: Quelltextbegrenzung (Quellcode zu lang??)
Ich benutze in mehreren Projekten eine Unit, die alleine >> 47.000 Zeilen hat. Ich habe noch keine Probleme mit dem Debugger gehabt.
|
Re: Quelltextbegrenzung (Quellcode zu lang??)
Also ich habe schon in einem Projekt mit über 600.000 Zeilen gearbeitet. Das ist Prinzipiell kein Problem.
Lösche mal alle alten dcu's und erzeuge das Projekt komplett neu. Ab und zu vergisst Delphi mal, einige DCU's neu zu erstellen, obwohl es in den Quellcode-Files Änderungen gab. Und dann linkt der Compiler halt Zeug zusammen was nicht mit dem Code übereinstimmt und das mag die IDE dann nicht so wirklich. |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Hmm, na für mich sind 30.000 schon ziemlich viel :-D
Also ich habe den Tipp von Phoenix befolgt und die alten dcus gelöscht. Leider kein Erfolg. Ich kann immer erst ab einer bestimmten Stelle im Quellcode wieder Haltepunkte setzen (erkenne ich ja an den blauen Punkten am Rand). Die Stelle ist immer wieder die gleiche aber der Quellcode dort funktioniert einwandfrei. Und wie gesagt, entferne ich die letzte hinzugekommene Prozedur (die funktioniert), kann ich wieder von Anfang Haltepunkte setzen. Merkwürdig :gruebel: Trotzdem Danke! Gruß, Jana |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Sowas ähnliches hatte ich auch mal. Allerdings war da die Codestelle die das Verhalten ausgelöst hat fehlerhaft. Ich habe allerdings keine Ahnung mehr was genau damit nicht stimmte. Ist schon ein paar Jährchen her.
Probiere mal den Methodenrumpf mit einem anderem Namen und ohne Inhalt einzufügen. Dann müsste es immer noch gehen. Dann füge die neue Logik Stück für Stück, Zeile für Zeile hinzu und schaue, an welcher Stelle in dem Code der Linker verrückt spielt. |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Hallo Jana,
es könnte auch am Kommentar liegen! Ich habe eine Untit, in die ich ein paar Zeilen aus dem SDK als Kommentar kopiert habe. Seitdem "spinnt" der Debugger. Lösche ich den Kommentar ist wieder alles im Lot. Ich vermute, daß es sich um irgendwelche Sonderzeichen handelt, habe mir aber nie die Mühe gemacht sie zu identifizieren. Gruß K-H |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Hallo incognito,
gibt es diese besagte Unit in irgendeinem deiner eingestellten Suchpfade etc. nochmal in älterer Version. Das hatte ich mal. Da wird dann die "falsche" unit gezogen für Compilieren oder Debuganzeige. Ich kann mich nicht mehr so genau erinnern wie das war unter D7. Meine Erfahrung bei dieser Art Fehler war immer: - IDE schließen - DCUs löschen (wie Phoenix schon geschrieben hat) - andere Dateien löschen (alles außer rc,inc,res,pas,dfm,dpr ggf. andere wichtige Dateien die nicht wieder von der IDE erstellt werden) - Projekt nicht in einer Projektgruppe öffnen - IDE-Neustart Danach komplett neue erzeugen. Klappt das alles nicht die Sache mit den Suchpfaden etc. prüfen (In Projektoptionen und in allg. Optionen). Hoffe, das bringt dich weiter. Greez, Chris |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Zitat:
Lade den Quelltext in eine Stringlist und speicher die Stringlist wieder ab -> Schon wird aus $0D ein $0D0A und alles ist gut. |
Re: Quelltextbegrenzung (Quellcode zu lang??)
@chrisE
Hab deine Tipps jetzt mal befolgt. Alle nicht gewünschten Dateien gelöscht. Mein Projekt gehört zu keiner Projektgruppe. In den Projektoptionen ist bei Suchpfad nichts eingetragen. In den Umgebungsoptionen gibt es nur einen Suchpfad für die Delphibibliotheken (oder?). Dort sind natürlich die Delphi-Pfade angegeben aber nichts, das im Bezug zu meinem Programm steht. Hat leider nicht funktioniert. Wäre ja auch zu schön gewesen :( @ phoenix, p80286: Sowas hatte ich hier auch schonmal gelesen. Irgendwie scheint da was mit Copy&Paste nicht ganz zu klappen. Bei einem anderen Beitrag hier im Forum lag es an einem Zeilenumbruch (Quelltext aus dem Internet kopiert) den der Compiler nicht richtig interpretiert hat. An der letzten Prozedur die ich eingefügt kann es nicht liegen, die hab ich per hand geschrieben. Da wird mir dann wahrscheinlich wirklich nichts anderes übrib bleiben, als die einzelnen Prozeduren Schritt für Schritt durchzugehen :( Habe einiges in meinem Prog mit Copy&Paste gemacht. Trotzdem vielen Dank für eure Hinweise! |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Zitat:
|
Re: Quelltextbegrenzung (Quellcode zu lang??)
@Guinnes
Zum Ausprobieren hab ich den Notepad genommen, der zeigt so schöne Kästchen an! Du hattest (natürlich) recht! aber für eine größere Unit ist Dein Tip(Stringlist) auf jeden Fall effektiver. Gruß K-H |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Hi,
ich würde mal fast meinen, dass der Linker die entsprechenden Zeilen in denen keine Haltepunkte gesetzt werden können entfernt hat. Das wird daran liegen, dass in diesem Projekt diese Zeilen nicht angesprochen werden. Gruss |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Ich hatte für soein Problem auch mal (vor)letztes Jahr einen kleinen Code gepostet, in einem Thread mit dem selben Problem, welcher auch noch andere Steuerzeichen entfernt, welche eventuell Probleme verursachen können ... nur ich fand schon beim orherigen Thread, wo auch mal wieder jemand (dieses Problem kam schon öfters vor) dieses Problem hatte, den besagten Threads mit meinem "billigen" Code nimmer ... sind schon zuviele Threads vorhanden, wo welche über sowas klagen. :stupid:
|
Re: Quelltextbegrenzung (Quellcode zu lang??)
Zitat:
|
Re: Quelltextbegrenzung (Quellcode zu lang??)
Zitat:
Ich öffne mit Notepad manchmal meine 200MB-Logdateien um was zu suchen. Is kein Problem. Oder was meinst Du mit 'kaum was'. |
Re: Quelltextbegrenzung (Quellcode zu lang??)
In Vista oder Win7 wurde eine neue komplett überarbeitete Notepad-Version eingeführt.
Davor geht sowas zwar, aber z.B. in XP dauert das Laden/Bearbeiten soeiner Datei nahezu ewig. |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Den Tipp mit der Stringliste hatter nun noch nicht probiert. Sollte mit Opendialog und Memofeld recht einfach gehen.
Ich hatte solche Probleme auch schon, da half die Umwandlung von $0D in $0D0A. Aber wenn die Stringliste die Umwandlung beim Einlesen automatisch macht... |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Guten Morgen alle miteinander!!
Ersteinmal vielen Dank für die vielen Hinweise. Ich hatte gestern noch folgendes ausprobiert: neues Projekt: 1 Button 1 Memo
Delphi-Quellcode:
Wieder alle alten Dateien (dcu ...) gelöscht.var Liste : TStrings; begin Liste := TStringList.Create; Liste.LoadFromFile('meineDatei.pas'); Memo1.Clear; Memo1.Lines.AddStrings(Liste); Liste.Clear; Liste.AddStrings(Memo1.Lines); Liste.SaveToFile('meineDatei.pas'); end; Hatte allerdings auch keinen Erfolg :( Ich denke, ich habe das problem nun vorerst gelöst: Mein Prog hat eine Unmenge von Buttons, verteilt auf unterschiedliche TabSheets. Auf jedem TabSheet heißen die Buttons ähnlich:
Delphi-Quellcode:
weshalb ich die Namen der Button per Copy&Paste + Anpassung vergeben habe. Ich schätze, das hierbei irgendwo der Fehler aufgetreten ist, denn der Fehler mit dem Compiler trat immer dann auf, wenn ich die OnClick-Ereignisse der Buttons hinzugefügt habe. Ich habe nun also die Buttons einmal umbenannt in B1, B2 ..... und anschließend wieder den alten Namen vergeben (diesmal per Hand) und nun funktioniert es erstmal wieder. Ich hoffe, dass es nun auch daran lag!
Button_TabSheet1_VarianteA_Feld1_add
Button_TabSheet1_VarianteA_Feld2_add Button_TabSheet1_VarianteA_Feld3_add ... Vielen Dank für eure Hilfe! Gruß, Jana |
Re: Quelltextbegrenzung (Quellcode zu lang??)
Ja, macht sie ... also indirekt.
Die TStringList ließt nur die Zeileninhalte aus, merkt sich nicht wo welcher Zeilenumbruch war und beim Auslesen/Speichern wird das Standard-CRLF einfach zwischen die Zeilen geschoben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz