Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Autovervollständigung geht nicht (https://www.delphipraxis.net/216354-autovervollstaendigung-geht-nicht.html)

Willie1 15. Dez 2024 17:49

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:
with
liegen, das ich hier sehr intensiv nutze. Meine Type Deklarationen sind sehr umfangreich. Könnt ihr euch das mal im Anhang ansehen. Alle
Delphi-Quellcode:
with
zu entfernen, wäre extrem mühsam. Wie gesagt, das Programm läuft seit vielen Jahren stabil. Jetzt will ich es verbessern. Danke.

Willie.

jaenicke 15. Dez 2024 19:26

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:
  • Debuggen funktioniert an den Stellen nicht.
  • Beim Wechsel zu einer neueren Delphiversion kann es plötzlich Fehler beim Kompilieren geben.
  • Oder noch schlimmer: Es kompiliert nach dem Wechsel, tut aber das Falsche, ohne dass man so leicht die Ursache erkennen kann.
  • Der Code ist schlechter lesbar, weil man nicht direkt sieht, wozu Identifier innerhalb des with gehhören.

Willie1 16. Dez 2024 16:32

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von jaenicke (Beitrag 1544259)
Geht denn die Auswahlliste grundsätzlich auf? Sprich was genau passiert?

Wenn ich den Punkt setze ist kurz der Sanduhr-Kringel zu sehen und dann passiert nichts.

Ich habe viele
Delphi-Quellcode:
with Objekt1, Objekt2 do begin end
und verschachtelte
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.

himitsu 16. Dez 2024 16:46

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:
procedure TForm1.FormCreate(Sender: TObject);
var
  R: TRect;
begin
  ...
  with R do begin
    Width := Right - Right;
    Height := Bottom - Top;
  end;
end;
Was denkt du, könnte dieser Code denn machen?

Jeweils in Delphi 7 und in Delphi 10 :stupid:

omnibrain 16. Dez 2024 16:50

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von himitsu (Beitrag 1544327)
Dafür, dass WITH mehr Probleme bereitet, als es Quellcode/Speicher einspart, was selbst eine 1-buchstabige lokale Variable besser lösen würde ...

"with" ist für jemanden der erst spät und von anderen Sprachen zu Delphi kam echt das schlimmste Sprachfeature überhaupt...

himitsu 16. Dez 2024 17:09

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

Frickler 17. Dez 2024 09:52

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von himitsu (Beitrag 1544329)
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

So ist es. Deswegen ist für mich völlig unverständlich, warum man das nicht auch für with gemacht hat.
Delphi-Quellcode:
with var x := myImage1.Canvas, y := myImage2.Canvas.Brush do x.CopyRect(...);
mit x und y unbekannt außerhalb des Konstruktes.

himitsu 17. Dez 2024 09:56

AW: Autovervollständigung geht nicht
 
Delphi-Quellcode:
...
begin
  var x := myImage1.Canvas;
  var y := myImage2.Canvas.Brush;
  x.CopyRect(...);
  ... // x
end;
... // kein x
:angel:

Frickler 17. Dez 2024 09:59

AW: Autovervollständigung geht nicht
 
Delphi-Quellcode:
begin
  var i: integer;
  for i:=1 to 10 do ...
end;

himitsu 17. Dez 2024 10:12

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

Frickler 17. Dez 2024 10:26

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.

himitsu 17. Dez 2024 12:52

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.

QuickAndDirty 17. Dez 2024 13:41

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von omnibrain (Beitrag 1544328)
Zitat:

Zitat von himitsu (Beitrag 1544327)
Dafür, dass WITH mehr Probleme bereitet, als es Quellcode/Speicher einspart, was selbst eine 1-buchstabige lokale Variable besser lösen würde ...

"with" ist für jemanden der erst spät und von anderen Sprachen zu Delphi kam echt das schlimmste Sprachfeature überhaupt...

Ich denke mal es war für VB parität? Ich baue es über all wo ich es finde aus!

QuickAndDirty 17. Dez 2024 13:47

AW: Autovervollständigung geht nicht
 
btw.
Comp-time makros ...ich brauche sie
Oder wenigstens eine Compiler Magic version wie diese hier
Delphi-Quellcode:
For var Element In Menge Do Element := 0;
mit Beschreibbaren Element wobei Element dann eine dereferenzierte Referenz auf das Element in der Menge ist und keine Kopie.
Bzw.
per Compiler magic da sowas bei rauskommt.
Delphi-Quellcode:
menge.Setitems(index,0)
es geht mir nicht um das vermeiden von schreibarbeit sondern um das vermeiden von Off-by-one Fehlern.

Redeemer 17. Dez 2024 15:07

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von himitsu (Beitrag 1544352)
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

Kam bei ersterem nicht mal eine Warnung? Ich hab sie bei neueren Delphis allerdings zuletzt nicht gesehen.

QuickAndDirty 17. Dez 2024 15:10

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von Redeemer (Beitrag 1544380)
Zitat:

Zitat von himitsu (Beitrag 1544352)
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

Kam bei ersterem nicht mal eine Warnung? Ich hab sie bei neueren Delphis allerdings zuletzt nicht gesehen.

Ja da kommt oder kam eine "i könnte außerhalb der for schleife undefiniert sein."
Ich glaube in echt ist das keine variable sondern einfach das zählregister.

himitsu 17. Dez 2024 16:04

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von Redeemer (Beitrag 1544380)
Kam bei ersterem nicht mal eine Warnung? Ich hab sie bei neueren Delphis allerdings zuletzt nicht gesehen.

Im XE jedenfalls nicht,

aber es liest doch eh niemand, was da unten steht. :freak:

Willie1 17. Dez 2024 16:11

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.

himitsu 17. Dez 2024 16:39

AW: Autovervollständigung geht nicht
 
"Gehn" tut Beides schon,
aber ich verrate besser nicht, wie man Ersteres macht.

Ansonsten sind Delphi-Referenz durchsuchenBreak und Delphi-Referenz durchsuchenContinue legal erlaubt.

jaenicke 17. Dez 2024 16:47

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von Willie1 (Beitrag 1544387)
Hey Freunde, da hat sich mein Thema etwas verselbständigt. Aber ich kann verstehen, dass ihr mir hier konkret nicht helfen könnt.

Wenn du das Programm komplett zeigen könntest, z.B. auch per PN, könnte ich bei mir ausprobieren, ob es am Projekt liegt.

Es könnte z.B. sein, dass die Zeichenkodierung nicht in Ordnung ist.

Willie1 18. Dez 2024 16:49

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von jaenicke (Beitrag 1544390)
Wenn du das Programm komplett zeigen könntest, z.B. auch per PN, könnte ich bei mir ausprobieren, ob es am Projekt liegt.

Hallo Sebastian, danke für dein Angebot. Brauchst du das komplette Projekt z.B. mit zip gepackt oder genügt die Hauptfenster-Datei *.pas? PN heißt über den persönlichen Account hier im Forum? Mein Prg läuft zwar jetzt aber in Zukunft hätte ich das selbe Problem. Es ist das einzige Projekt, wo Delphi Auto... nicht funktioniert.

Willie.

himitsu 18. Dez 2024 17:14

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.

jaenicke 18. Dez 2024 17:28

AW: Autovervollständigung geht nicht
 
Du hast eine private Nachricht mit meiner Mail-Adresse. Dann brauchst du es nicht irgendwo hochladen.

jaenicke 1. Jan 2025 16:45

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 10.1 Trial testen, aber die kannst du nicht parallel mit der 10.1 Starter installieren, weshalb ich das nur empfehle, wenn du es auf einem anderen Rechner oder in einer virtuellen Maschine testen kannst. Eine Seriennummer kannst du aus dem Lizenzmanager heraus bei der Installation anfordern, das funktioniert auch heute noch.

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.

Willie1 1. Jan 2025 18:12

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von jaenicke (Beitrag 1544684)
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.

Ja, richtig verstanden. Nur bei diesem Projekt funktioniert die Autovervollständigung nicht.

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.

jaenicke 1. Jan 2025 19:12

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von Willie1 (Beitrag 1544690)
Ich habe nur die eine eigene Komponente eingebaut: AboutBox.

Ich meinte die Hexedit Komponente usw., also alles, was nicht mit Delphi mitgeliefert wird. Die gibt es vermutlich auch im Netz, aber ich habe sie rausgeworfen. Es ist auch unwahrscheinlich, dass die das Problem machen.

Zitat:

Zitat von Willie1 (Beitrag 1544690)
Für mich sind meine Records relativ komplex, könnte da Delphi ins Schwimmen kommen?

Nein, denn dann hätte es bei mir auch nicht funktioniert. Es ist ja bei mir die gleiche Version von Delphi, nur eine andere Edition. Am Quelltext habe ich abgesehen von den Komponenten nichts geändert.

Zitat:

Zitat von Willie1 (Beitrag 1544690)
Ich habe den Umstieg auf die CE Variante und den neuen Rechner noch nicht vollzogen.

Ich gehe stark davon aus, dass das Problem sich damit erledigt haben wird, egal woran es lag.

Willie1 3. Jan 2025 17:57

AW: Autovervollständigung geht nicht
 
Hallo Sebastian,

Zitat:

Ich würde dir aber zuerst raten, die .dproj Datei umzubenennen und die .dpr zu öffnen.
Habe ich gemacht, das bringt nichts. Ja, die anderen Komponenten von mir in den Fenstern hatte ich vergessen. Sie sind alle ca. 15 Jahre alt und ein Fehler wäre sicher auf gefallen.

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