Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Quelltextbegrenzung (Quellcode zu lang??) (https://www.delphipraxis.net/150050-quelltextbegrenzung-quellcode-zu-lang.html)

incognito 6. Apr 2010 12:17


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!

himitsu 6. Apr 2010 12:22

Re: Quelltextbegrenzung (Quellcode zu lang??)
 
Ich kann mich nicht erinnern, daß nur Aufgrund eines langen Quelltextes mein D7 durchdrehte.

guinnes 6. Apr 2010 12:24

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.

Phoenix 6. Apr 2010 12:26

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.

incognito 6. Apr 2010 13:37

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

Phoenix 6. Apr 2010 13:43

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.

p80286 6. Apr 2010 13:46

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

ChrisE 6. Apr 2010 13:50

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

guinnes 6. Apr 2010 14:00

Re: Quelltextbegrenzung (Quellcode zu lang??)
 
Zitat:

Zitat von p80286
Ich habe eine Untit, in die ich ein paar Zeilen aus dem SDK als Kommentar kopiert habe. Seitdem "spinnt" der Debugger......Ich vermute, daß es sich um irgendwelche Sonderzeichen handelt, habe mir aber nie die Mühe gemacht sie zu identifizieren.

Die "Sonderzeichen " sind die Zeilenendekennungen. Der Editor der IDE kommt mit $0D alleine gut klar, der Debugger nicht. Tipp :
Lade den Quelltext in eine Stringlist und speicher die Stringlist wieder ab -> Schon wird aus $0D ein $0D0A und alles ist gut.

incognito 6. Apr 2010 14:06

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!

guinnes 6. Apr 2010 14:47

Re: Quelltextbegrenzung (Quellcode zu lang??)
 
Zitat:

Zitat von incognito
Habe einiges in meinem Prog mit Copy&Paste gemacht.

Dann lies mal den Beitrag über deinem, dann weiss du auch, wie du es schnell beheben kannst.

p80286 6. Apr 2010 16:44

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

thkerkmann 6. Apr 2010 17:03

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

himitsu 6. Apr 2010 17:04

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:

Hansa 6. Apr 2010 17:16

Re: Quelltextbegrenzung (Quellcode zu lang??)
 
Zitat:

Zitat von p80286
Zum Ausprobieren hab ich den Notepad genommen, der zeigt so schöne Kästchen an!
Du hattest (natürlich) recht!

Jaja, Der Notepad, DOS-Editor etc. ist schon ganz gut. :mrgreen: Aber es sind DOS-Geschichten. Über 64 kb geht da kaum was. Die Wartung dafür wurde längst eingestellt. Insofern würde mich nicht wundern, wenn mit Editor usw. geöffneter Datei danach nix mehr geht. :cyclops:

alzaimar 6. Apr 2010 19:20

Re: Quelltextbegrenzung (Quellcode zu lang??)
 
Zitat:

Zitat von Hansa
Jaja, Der Notepad, DOS-Editor etc. ist schon ganz gut. :mrgreen: Aber es sind DOS-Geschichten. Über 64 kb geht da kaum was.

Ach was.
Ich öffne mit Notepad manchmal meine 200MB-Logdateien um was zu suchen. Is kein Problem. Oder was meinst Du mit 'kaum was'.

himitsu 6. Apr 2010 19:23

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.

schöni 6. Apr 2010 23:52

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...

incognito 7. Apr 2010 06:52

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:

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;
Wieder alle alten Dateien (dcu ...) gelöscht.

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:
Button_TabSheet1_VarianteA_Feld1_add
Button_TabSheet1_VarianteA_Feld2_add
Button_TabSheet1_VarianteA_Feld3_add
...
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!

Vielen Dank für eure Hilfe!

Gruß, Jana

himitsu 7. Apr 2010 06:58

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