Insert

Für Fragen von Einsteigern und Programmieranfängern...
Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Insert

Beitrag von Winni »

theo hat geschrieben:
Sa 22. Jan 2022, 17:47

Nee Quatsch, aber die Forensoftware warnt dich, wenn zwischenzeitlich eine anderer Kommentar geschrieben wurde.
Ja, das ist ein weitere nerviger Punkt an dieser Software. Wenn ich abschicken will, soll er mir nicht dazwischen funken.

Aber da ist so Vieles an dieser Software ....

Warum reagiert die nicht - internationaler Standard - auf Strg-I oder Strg-B mit kursiv oder fett?

Winni

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Insert

Beitrag von theo »

Winni hat geschrieben:
Sa 22. Jan 2022, 17:54
theo hat geschrieben:
Sa 22. Jan 2022, 17:47
Nee Quatsch, aber die Forensoftware warnt dich, wenn zwischenzeitlich eine anderer Kommentar geschrieben wurde.
Ja, das ist ein weitere nerviger Punkt an dieser Software. Wenn ich abschicken will, soll er mir nicht dazwischen funken.
Ich finde das sehr gut. Wenn die vorherige Antwort ausreicht, dann brauche ich meinen Käse ja nicht mehr hinterher schicken.

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Insert

Beitrag von Frank Ranis »

Hallo ,
theo hat geschrieben:
Sa 22. Jan 2022, 18:07
Winni hat geschrieben:
Sa 22. Jan 2022, 17:54
theo hat geschrieben:
Sa 22. Jan 2022, 17:47
Nee Quatsch, aber die Forensoftware warnt dich, wenn zwischenzeitlich eine anderer Kommentar geschrieben wurde.
Ja, das ist ein weitere nerviger Punkt an dieser Software. Wenn ich abschicken will, soll er mir nicht dazwischen funken.
Ich finde das sehr gut. Wenn die vorherige Antwort ausreicht, dann brauche ich meinen Käse ja nicht mehr hinterher schicken.
Vielleicht wäre es gut , alles auf Termine umzubauen .
Für eine Antwort braucht man einen Termin und dann funkt einem auch keiner dazwischen . :)

Gruß

Frank
www.flz-vortex.de

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Insert

Beitrag von PascalDragon »

Winni hat geschrieben:
Sa 22. Jan 2022, 16:47
Der Compiler ist wieder einmal zu doof, die Adresse einer property zu finden:

Code: Alles auswählen

 Error: Can't take the address of constant expressions
Das hat nichts mit “zu doof” zu tun, sondern es ist eine Design Entscheidung der Sprache, dass du nicht die Adresse einer Eigenschaft nehmen kannst. Es würde nämlich letztlich davon abhängen, ob die Eigenschaft auf ein Feld oder eine Funktion geht, denn nur bei ersterer könnte man zuverlässig eine Adresse nehmen (der Rückgabewert einer Funktion könnte komplette berechnet sein, den Wert also zu ändern würde nichts bringen, da er nur temporär ist). Da der Sinn von Eigenschaften ist, dass der Zugriff auf die darunterliegenden Daten möglichst transparent für den Nutzer erfolgt, ist es entsprechend nicht sinnvoll von Nutzern zu verlangen, dass sie darauf achten, da dies der Entwickler der Klasse mit der Eigenschaft jederzeit ändern kann. Dies würde dann dazu führen, dass dein Code nicht mehr kompiliert. Deswegen ist das einfach nicht erlaubt.
theo hat geschrieben:
Sa 22. Jan 2022, 15:26
Es gibt dabei noch eine Merkwürdigkeit:
Wenn ich auf "insert" -> "Finde Deklaration von Insert" gehe, dann springt er auf TWinControl private:

Code: Alles auswählen

    procedure Insert(AControl: TControl; Index: integer);   
Nicht so gut, oder?
Lazarus 2.3.0 rmain-2_3-288-gd5fe15d448 FPC 3.2.2 x86_64-linux-gtk2
Das liegt wahrscheinlich daran, dass es Insert für Strings und dynamische Arrays nicht als Prozedurendeklaration an sich gibt, das es ein Compilerintrinsic gibt. Das heißt, die einzige Deklaration von Insert, die aus Sicht der CodeTools wirklich existiert ist die von TWinControl.Insert und zu der geht die Codenavigation dann. Das sollte wahrscheinlich als Bug gemeldet werden... ;)
FPC Compiler Entwickler

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Insert

Beitrag von theo »

PascalDragon hat geschrieben:
So 23. Jan 2022, 14:28
Das liegt wahrscheinlich daran, dass es Insert für Strings und dynamische Arrays nicht als Prozedurendeklaration an sich gibt, das es ein Compilerintrinsic gibt. Das heißt, die einzige Deklaration von Insert, die aus Sicht der CodeTools wirklich existiert ist die von TWinControl.Insert und zu der geht die Codenavigation dann. Das sollte wahrscheinlich als Bug gemeldet werden... ;)
Danke.

Der Witz dabei ist, dass Code-Insight/Completion (Ich weiss nicht genau, wie man das nennt, siehe Bild) das schon richtig macht. Dort wird die private Methode von TWinControl nicht angezeigt. Aber "Finde Deklaration von Insert" springt dorthin.
Ist jetzt keine Riesenproblem, aber zumal es noch "private" ist, schon etwas merkwürdig.
insert_code_insight.png
insert_code_insight.png (30.67 KiB) 1296 mal betrachtet

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Insert

Beitrag von Winni »

Hi!

Dies ist nicht die einzige Stelle bei der sich die IDE auf den Standpunkt stellt : "Intrinsics - Die gibt es hier nicht".

Wenn man für copy, insert, delete etc die Hilfe mit F1 aufruft, dann passiert: garnix. Nicht mal eine Fehlermeldung.

Winni

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Insert

Beitrag von PascalDragon »

theo hat geschrieben:
So 23. Jan 2022, 14:42
Ist jetzt keine Riesenproblem, aber zumal es noch "private" ist, schon etwas merkwürdig.
Sollte aber trotzdem gemeldet werden.
Winni hat geschrieben:
So 23. Jan 2022, 15:54
Wenn man für copy, insert, delete etc die Hilfe mit F1 aufruft, dann passiert: garnix. Nicht mal eine Fehlermeldung.
Sollte auch gemeldet werden. denn an sich gibt es diese Seiten.
FPC Compiler Entwickler

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Insert

Beitrag von theo »

PascalDragon hat geschrieben:
Mo 24. Jan 2022, 13:58
theo hat geschrieben:
So 23. Jan 2022, 14:42
Ist jetzt keine Riesenproblem, aber zumal es noch "private" ist, schon etwas merkwürdig.
Sollte aber trotzdem gemeldet werden.
Ja, ich bin mir nur nicht ganz sicher, was das "richtige" Verhalten genau wäre, bzw. was es mit dem Jump auf TWinControl private auf sich hat und ob das vielleicht zwei verschiedene Probleme sind.
Ich möchte das erst hier besprechen, bevor ich einen halbgaren Bug Report mache.

Das eine ist ja, dass die IDE wie Winni auch bemerkt, die Deklaration von copy, insert, delete nicht findet.
Es existiert aber durchaus RTL Code dazu. Für insert z.B. in sstrings.inc auf Zeile 70.
Code Insight macht es richtig (Bild oben), aber "Suche Deklaration" nicht.
Welche Schlüsse ziehen wir daraus?

Das andere ist: Sollte "Suche Deklaration" überhaupt jemals auf private Methoden in anderen Units springen?

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Insert

Beitrag von PascalDragon »

theo hat geschrieben:
Mo 24. Jan 2022, 14:33
PascalDragon hat geschrieben:
Mo 24. Jan 2022, 13:58
theo hat geschrieben:
So 23. Jan 2022, 14:42
Ist jetzt keine Riesenproblem, aber zumal es noch "private" ist, schon etwas merkwürdig.
Sollte aber trotzdem gemeldet werden.
Ja, ich bin mir nur nicht ganz sicher, was das "richtige" Verhalten genau wäre, bzw. was es mit dem Jump auf TWinControl private auf sich hat und ob das vielleicht zwei verschiedene Probleme sind.
Ich möchte das erst hier besprechen, bevor ich einen halbgaren Bug Report mache.
Es ist nicht deine Aufgabe eine Lösung zu finden. Du meldest ein Problem (was das definitiv ist) und die Lazarus Entwickler kümmern sich um eine Lösung. Du kannst natürlich eine Lösung mit angeben, aber das ist nicht Sinn der Sache.
theo hat geschrieben:
Mo 24. Jan 2022, 14:33
Das eine ist ja, dass die IDE wie Winni auch bemerkt, die Deklaration von copy, insert, delete nicht findet.
Es existiert aber durchaus RTL Code dazu. Für insert z.B. in sstrings.inc auf Zeile 70.
Code Insight macht es richtig (Bild oben), aber "Suche Deklaration" nicht.
Welche Schlüsse ziehen wir daraus?
Bis vor 3.2 waren Insert und Delete noch keine Intrinsics, das hat sich erst mit 3.2 geändert, als die Unterstützung für dynamische Arrays dazu kam. Seitdem gibt es die entsprechenden Deklarationen nicht mehr (das in sstrings.inc sind Definitionen) und CodeTools braucht seit dem speziellen Code, der diese Intrinsics korrekt behandelt. Und eben nicht alle Teile von Lazarus behandeln das korrekt.

Aber nochmal: du musst keine Schlüsse ziehen. Du machst einen Bug Report der letztlich sagt, „Hilfe für Copy, Delete und Insert” wird nicht angezeigt und fertig; natürlich ein bisschen ausführlicher, aber letztlich ist das die einzige Information die wirklich relevant ist. Mach das nicht komplizierter als es ist.
theo hat geschrieben:
Mo 24. Jan 2022, 14:33
Das andere ist: Sollte "Suche Deklaration" überhaupt jemals auf private Methoden in anderen Units springen?
Das ist durchaus auch eine valide Frage und womöglich ist es sinnvoll hier einen weiteren Bugreport zu melden.
FPC Compiler Entwickler

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Insert

Beitrag von theo »


Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Insert

Beitrag von theo »

...und es gibt auch schon eine Antwort.
Ja gut, es gibt natürlich keinen RTL-Quelltext dazu.
Wenn man es weiss, ist es logisch, aber schön ist es nicht, wenn einfach nichts passiert.

@Winni: Ich habe etwas blind dein Anliegen "Wenn man für copy, insert, delete etc die Hilfe mit F1 aufruft, dann passiert: garnix. Nicht mal eine Fehlermeldung." auch noch dazu gepackt.
Ich selber habe aber nur ein Problem bei insert, wo er dann nicht auf die Prozedur anzeigt sondern die Übersicht "Reference for package 'rtl'.
Kannst du vllt. noch etwas dazu sagen in https://gitlab.com/freepascal.org/lazar ... sues/39600

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Insert

Beitrag von Winni »

Hi Theo!

Uuups - bzgl. F1 hat sich tatsächlich was getan - wie Du es beschreibst. Man landet bei der Referenz - was ja auch nicht der Sinn von F1 sein kann, sich mühseligdurch die Liste bewegen .

Das Nicht-Verhalten von F1 war in älteren Versionen präsent.

Winni

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Insert

Beitrag von theo »

Winni hat geschrieben:
Di 25. Jan 2022, 12:33
Uuups - bzgl. F1 hat sich tatsächlich was getan - wie Du es beschreibst. Man landet bei der Referenz - was ja auch nicht der Sinn von F1 sein kann, sich mühseligdurch die Liste bewegen .
Das Nicht-Verhalten von F1 war in älteren Versionen präsent.
Kannst du das noch dazu melden? Ich habe dich schon angekündigt. :D
https://gitlab.com/freepascal.org/lazar ... sues/39600

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Insert

Beitrag von Winni »

theo hat geschrieben:
Di 25. Jan 2022, 12:36
Winni hat geschrieben:
Di 25. Jan 2022, 12:33
Uuups - bzgl. F1 hat sich tatsächlich was getan - wie Du es beschreibst. Man landet bei der Referenz - was ja auch nicht der Sinn von F1 sein kann, sich mühseligdurch die Liste bewegen .
Das Nicht-Verhalten von F1 war in älteren Versionen präsent.
Kannst du das noch dazu melden? Ich habe dich schon angekündigt. :D
https://gitlab.com/freepascal.org/lazar ... sues/39600

Hi!

Nett von Dir.
Aber ich hab keinen gitlab-account und will auch keinen haben.
Niemand hat mich gefragt, als das bisherige Bugtracker-System stillgelegt wurde.

Lange Diskussion im internationalen Forum, die ich hier nicht wiederholen möchte.


Winni

Antworten