Einzelnen Beitrag anzeigen

MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#1

Code-Vervollständigung sehr langsam (D7)

  Alt 2. Feb 2010, 11:50
Ich benutze Delphi 7 und habe das Problem, dass IDE-Features wie die Code-Vervollständigung oder die Anzeige der Code-Parameter bei Methodenaufrufen unheimlich langsam reagieren. Das ganze ist aber nur in unserem Hauptprojekt (entsprechend groß) so dramatisch, nicht in kleineren Projekten. Und im Hauptprojekt auch nur in Units, die gewisse andere selbstgeschriebene Units verwenden. Erzeuge ich in unserem Hauptprojekt bspw. ein neues Formular und verwende darin keinerlei andere unserer eigenen Units, so ist die Code-Vervollständigung darin richtig flott. Es muss also an irgendeiner (oder mehrerer) eigenen Unit liegen, die den Aufbau der Code-Vervollständigung dermaßen verlangsamt.

Jetzt ist nur die Frage welche Unit(s) und warum gerade diese die IDE so dermaßen ausbremsen. An der bloßen Größe der Units kann es eigentlich nicht liegen, oder? Schließlich bindet Delphi ja beim Anlegen eines neuen Formulars eine ganze Reihe Delphi-interner Units ein, die allesamt ebenfalls sehr umfangreich sind:
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
Trotzdem ist und bleibt die Code-Vervollständigung pfeilschnell, obwohl sie in dieser Ausgangssituation bestimmt bereits tausende von Klassen, Methoden, Variablen und Konstanten zu "verwalten" hat. Kommen ein paar eigene Units hinzu, so verlangsamt sich das ganze jedoch um mehrere Sekunden (vorher ja nur Bruchteile einer Sekunde).

Was ich mir vorstellen könnte, ist, dass es in den eigenen Units irgendwelche unschönen Konstrukte gibt, die die IDE so dermaßen verlangsamen. Also bspw. irgendwelchen zirkulären Bezüge oder sonst etwas. Also dass Unit A die Unit B verwendet und umgekehrt. Kann das sein? Solche Stellen gibt es leider Gottes, ich könnte den Verursacher dafür auch steinigen

Habt ihr gerade bei Delphi 7 auch schon ähnliche Erfahrungen gemacht und wie konntet ihr sie lösen? Oder muss ich mich damit abfinden?

Danke für eure Hilfe!
  Mit Zitat antworten Zitat