![]() |
Autovervollständigung geht nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
ich bin's schon wieder. In meinem (sehr alten) Projekt Fussball funktioniert die Autovervollständigung nicht. Wenn ich es "von Hand" mache, lässt es sich kompilieren und läuft. Ich habe hier im Forum gesucht. Es gibt einen langen Thred zu diesem Thema. Es soll an
Delphi-Quellcode:
liegen, das ich hier sehr intensiv nutze. Meine Type Deklarationen sind sehr umfangreich. Könnt ihr euch das mal im Anhang ansehen. Alle
with
Delphi-Quellcode:
zu entfernen, wäre extrem mühsam. Wie gesagt, das Programm läuft seit vielen Jahren stabil. Jetzt will ich es verbessern. Danke.
with
Willie. |
AW: Autovervollständigung geht nicht
Die Codevervollständigung ist leider ein schwieriges Thema, wenn man unsaubere Quelltexte mit Kreuzbeziehungen oder with hat und eine Delphiversion mit dem neuen LSP hat.
In deiner 10.1 Starter Edition hast du aber noch die alte Codevervollständigung ohne LSP. Da sollte die Vervollständigung zumindest aufgehen. Dass sie mit with nicht immer gute Vorschläge machen kann, liegt in der Natur der Sache. Aber abgesehen davon sollte es funktionieren. Geht denn die Auswahlliste grundsätzlich auf? Sprich was genau passiert? Davon abgesehen bringt with aber noch weitere Probleme, weshalb man es ohnehin beseitigen sollte:
|
AW: Autovervollständigung geht nicht
Zitat:
Ich habe viele
Delphi-Quellcode:
und verschachtelte
with Objekt1, Objekt2 do begin end
Delphi-Quellcode:
.
with
In Delphi Büchern wurde with empfohlen, um Quelltext zu sparen. Aber jetzt werde ich sie sukzessive entfernen. Ich denke, dass meine Typ Deklarationen im Vergleich zu einem professionellen Programm sicher nicht aufwändig sind. Willie. |
AW: Autovervollständigung geht nicht
Dafür, dass WITH mehr Probleme bereitet, als es Quellcode/Speicher einspart, was selbst eine 1-buchstabige lokale Variable besser lösen würde ...
Delphi-Quellcode:
Was denkt du, könnte dieser Code denn machen?
procedure TForm1.FormCreate(Sender: TObject);
var R: TRect; begin ... with R do begin Width := Right - Right; Height := Bottom - Top; end; end; Jeweils in Delphi 7 und in Delphi 10 :stupid: |
AW: Autovervollständigung geht nicht
Zitat:
|
AW: Autovervollständigung geht nicht
inline variables :stupid:
OK, nicht der perfekte WITH-Ersatz und erst in Delphi 12.2 repariert,
Delphi-Quellcode:
irgendwas.x := 123;
with irgendwas do x := 123; var i := irgendwas; i.x := 123: aber für FOR das Perfekteste, weil hier niermand mehr auf die saublöde Idee kommen kann, nach/außerhalb der Schleife nochmal auf i zugreifen zu wollen.
Delphi-Quellcode:
for var i := 1 to 10 do
|
AW: Autovervollständigung geht nicht
Zitat:
Delphi-Quellcode:
mit x und y unbekannt außerhalb des Konstruktes.
with var x := myImage1.Canvas, y := myImage2.Canvas.Brush do x.CopyRect(...);
|
AW: Autovervollständigung geht nicht
Delphi-Quellcode:
:angel:
...
begin var x := myImage1.Canvas; var y := myImage2.Canvas.Brush; x.CopyRect(...); ... // x end; ... // kein x |
AW: Autovervollständigung geht nicht
Delphi-Quellcode:
begin
var i: integer; for i:=1 to 10 do ... end; |
AW: Autovervollständigung geht nicht
Da ist i aber dennoch außerhalb des VAR zugreifbar.
Delphi-Quellcode:
begin
var i: integer; for i := 1 to 10 do begin end; hier end;
Delphi-Quellcode:
for var i := 1 to 10 do begin
end; hier nicht |
AW: Autovervollständigung geht nicht
Ok, Dein Punkt :-)
Aber noch was: Codehervorhebung. for.. ist ein eigener spezieller Block, with... ist ein eigener spezieller Block, begin...end ist auch ein eigener Block, aber kein spezieller. |
AW: Autovervollständigung geht nicht
Zumindest für (temporären) DebugCode und TestCodes ist eine Inline-Var echt nett zu gebrauchen.
Innerhalb des selben $IFDEF lassen sich so "wenige" Zeilen Code unterbringen, samt der Variablendeklaration. Und eben auch als schnellen Ersatz für WITH. |
AW: Autovervollständigung geht nicht
Zitat:
|
AW: Autovervollständigung geht nicht
btw.
Comp-time makros ...ich brauche sie Oder wenigstens eine Compiler Magic version wie diese hier
Delphi-Quellcode:
mit Beschreibbaren Element wobei Element dann eine dereferenzierte Referenz auf das Element in der Menge ist und keine Kopie.
For var Element In Menge Do Element := 0;
Bzw. per Compiler magic da sowas bei rauskommt.
Delphi-Quellcode:
es geht mir nicht um das vermeiden von schreibarbeit sondern um das vermeiden von Off-by-one Fehlern.
menge.Setitems(index,0)
|
AW: Autovervollständigung geht nicht
Zitat:
|
AW: Autovervollständigung geht nicht
Zitat:
Ich glaube in echt ist das keine variable sondern einfach das zählregister. |
AW: Autovervollständigung geht nicht
Zitat:
aber es liest doch eh niemand, was da unten steht. :freak: |
AW: Autovervollständigung geht nicht
Hey Freunde, da hat sich mein Thema etwas verselbständigt. Aber ich kann verstehen, dass ihr mir hier konkret nicht helfen könnt.
Es ist mühsam ohne Autovervollständigung Quelltext zu schreiben, besonders bei eigenen classes. for var i:=1 to 10 geht ab Delphi 10.3. das sagt zumindest die KI. Das ist aber kein ernsthaftes Problem, weil ich seit Quick-Basic weiß, dass man nach Ende der Schleife nicht mehr auf den Index zu greifen kann. Das weiß jeder, der mal die Grundlagen des Programmnieren gelernt hat. Auch Ändern des Index und goto aus der Schleife geht gar nicht! Willie. |
AW: Autovervollständigung geht nicht
|
AW: Autovervollständigung geht nicht
Zitat:
Es könnte z.B. sein, dass die Zeichenkodierung nicht in Ordnung ist. |
AW: Autovervollständigung geht nicht
Zitat:
Willie. |
AW: Autovervollständigung geht nicht
Jupp, PN aka "Private Nachricht", hier im Forum.
In PN gibt es hier leider keine Dateianhänge. ZIP "irgendwo" hochladen und Link per PN (vielleicht die ZIP noch mit Passwort, wenn man z.B. dem ausgewählten FileUploader nicht ganz traut) ansonsten wohl per Mail oder so. NUR die PAS, ginge auch als [DELPHI] ... [/DELPHI] in der PN, aber einzelne PAS lassen sich nicht kompilieren und die Codevervollständigung funktioniert so auch niemals. |
AW: Autovervollständigung geht nicht
Du hast eine private Nachricht mit meiner Mail-Adresse. Dann brauchst du es nicht irgendwo hochladen.
|
AW: Autovervollständigung geht nicht
Also bei mir funktioniert die Quelltextvervollständigung, wenn ich die Zusatzkomponenten entferne, die ich nicht habe. Vorher habe ich die Meldung "Die Programmierhilfe kann nicht aufgerufen werden, da der Quelltext Fehler enthält" bekommen. Es ist aber nie gar nichts passiert.
Ich habe die 10.1 Starter nicht, weshalb ich die 10.1 Trial verwendet habe. Ich kann leider nicht sagen, ob es an der Starter liegen könnte. Das könntest du mit der ![]() Ich würde dir aber zuerst raten, die .dproj Datei umzubenennen und die .dpr zu öffnen. Dann wird die Datei neu erstellt. Da fehlt dann dein Icon usw., aber du kannst einmal testen, ob es dann geht. Denn an den Units (Zeichenkodierung, ...) kann es kaum liegen, denn sonst hätte es bei mir sicher nicht funktioniert. Die Projektdatei musste ich aber modifizieren. Wenn es dann auch nicht geht, könntest du einmal ein neues Projekt erstellen, sicherstellen, dass dort die Autovervollständigung geht, und dann einzelne Units des Projekts hinzufügen und prüfen, ob es geht. Zur Sicherheit: Ich habe das doch richtig verstanden, dass es nur in dem Projekt nicht geht, in anderen aber schon, oder? Und dann könntest du es natürlich auch mit der aktuellen Community Edition (wenn du diese nutzen darfst) oder der aktuellen Trial ausprobieren. |
AW: Autovervollständigung geht nicht
Zitat:
Ich habe nur die eine eigene Komponente eingebaut: AboutBox. Die konntest du einfach rauswerfen. Ich habe sie in fast allen Projekten eingebaut und sie zeigt nur ein Fenster mit Programmname und Version an und macht sonst keinen Ärger. Ich habe zwei Icons als Ressorse gespeichert aber das hat doch sicher nichts damit zu tun. Für mich sind meine Records relativ komplex, könnte da Delphi ins Schwimmen kommen? Ich werde deinem Rat mit der dproj-Datei folgen. Ich habe den Umstieg auf die CE Variante und den neuen Rechner noch nicht vollzogen. |
AW: Autovervollständigung geht nicht
Zitat:
Zitat:
Zitat:
|
AW: Autovervollständigung geht nicht
Hallo Sebastian,
Zitat:
Das Programm läuft glatt, hatte noch drei kleine Bugs entdeckt. Ich werde die Sache nicht mehr weiter verfolgen. Wird sich nach deiner Aussage mit dem Umstieg auf das relativ neue Delphi 11 erledigen. Falls nicht, werde ich mich nochmal melden dürfen. Gruß Willie. Nachtrag: Nachdem ich die dproj-Datei umbenannt hatte und eine neue angelegt wurde, fängt Norton an zu meckern und überprüft ständig die verdächtige exe-Datei. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 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