Automatische Pozedurerzeugung

Für Fragen rund um die Ide und zum Debugger
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Automatische Pozedurerzeugung

Beitrag von fliegermichl »

Ich habe eine Methode in meinem Formular erstellt und auch implementiert.
Wenn ich jetzt irgendeinen Event durch Doppelklick im Inspektor erzeuge,
dann erzeugt mir die IDE immer nochmal eine zusätzliche leere Implementation meiner Methode was der Compiler natürlich dann anmeckert.
Ich kann diese leere Implementation natürlich löschen aber es nervt.

Die Ursache liegt darin, dass ich die Parameter der Implementation nicht ganz genauso aufgeführt habe wie bei der Deklaration im Interfaceteil obwohl es syntaktisch korrekt ist und ja auch compiliert wird.

Code: Alles auswählen

type
 TForm1 = class ( TForm )
 public
  function GetIniEntry(Section: string; Value: string; Default : string = '') : string;
 end;
 
implementation
function TForm1.GetIniEntry(Section, Value, Default : string) : string;
begin
end;
Kann man das als Bug in den Codetools werten?

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2641
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Automatische Pozedurerzeugung

Beitrag von m.fuchs »

Was spricht denn dagegen in der Implementation die Definition einfach korrekt hinzuschreiben?

Ich würde das jedenfalls nicht als Bug werten.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

sstvmaster
Beiträge: 576
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Automatische Pozedurerzeugung

Beitrag von sstvmaster »

Also hier bei mir mit einem leeren neuen Projekt, unter Windows, kann ich das nicht nachvollziehen.

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormChangeBounds(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private

  public
    function GetIniEntry(Section: string; Value: string; Default : string = '') : string;
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormChangeBounds(Sender: TObject);
begin

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

function TForm1.GetIniEntry(Section: string; Value: string; Default: string
  ): string;
begin

end;

end.   
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

sstvmaster
Beiträge: 576
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Automatische Pozedurerzeugung

Beitrag von sstvmaster »

m.fuchs hat geschrieben:
Fr 25. Aug 2023, 09:30
Was spricht denn dagegen in der Implementation die Definition einfach korrekt hinzuschreiben?

Ich würde das jedenfalls nicht als Bug werten.
Das wird doch aber so mit Shift+Strg+C so automatisch erzeugt?
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2641
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Automatische Pozedurerzeugung

Beitrag von m.fuchs »

sstvmaster hat geschrieben:
Fr 25. Aug 2023, 09:30
Also hier bei mir mit einem leeren neuen Projekt, unter Windows, kann ich das nicht nachvollziehen.
Du hast im Implementations-Teil es genauso geschrieben, wie im Interface:

Code: Alles auswählen

function TForm1.GetIniEntry(Section: string; Value: string; Default: string): string;
Und nicht wie fliegermichl in einer zusammengefassten Variante:

Code: Alles auswählen

function TForm1.GetiEntry(Section, Value, Default : string) : string;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2641
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Automatische Pozedurerzeugung

Beitrag von m.fuchs »

sstvmaster hat geschrieben:
Fr 25. Aug 2023, 09:32
m.fuchs hat geschrieben:
Fr 25. Aug 2023, 09:30
Was spricht denn dagegen in der Implementation die Definition einfach korrekt hinzuschreiben?

Ich würde das jedenfalls nicht als Bug werten.
Das wird doch aber so mit Shift+Strg+C so automatisch erzeugt?
Nein, erzeugt wird jeder Parameter mit eigener Typangabe, nicht die Zusammenfassung - drei Parameter, kommagetrennt und eine Typangabe. Das ist halt der Unterschied.

Ich sehe aber keinen Grund, warum man diese Zusammenfassung benötigt.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

sstvmaster
Beiträge: 576
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Automatische Pozedurerzeugung

Beitrag von sstvmaster »

Nein habe ich nicht, s.o. Oder deine Browser zeigt da was falsch an.

Code: Alles auswählen

function GetIniEntry(Section: string; Value: string; Default : string = '') : string;
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

sstvmaster
Beiträge: 576
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Automatische Pozedurerzeugung

Beitrag von sstvmaster »

Ja jetzt habe ich es gesehen.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2641
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Automatische Pozedurerzeugung

Beitrag von m.fuchs »

sstvmaster hat geschrieben:
Fr 25. Aug 2023, 09:38
Nein habe ich nicht, s.o. Oder deine Browser zeigt da was falsch an.

Code: Alles auswählen

function GetIniEntry(Section: string; Value: string; Default : string = '') : string;
Das ist doch aber die nicht zusammengefasste Angabe der Parameter. Genau wie ich es sage, drei Parameter, drei Doppelpunkte, dreimal String. Dann funktioniert es auch.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

sstvmaster
Beiträge: 576
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Automatische Pozedurerzeugung

Beitrag von sstvmaster »

Hast recht.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Automatische Pozedurerzeugung

Beitrag von fliegermichl »

Ja das waren händisch angelegte Implementierungen.
Wenn ich neue Methoden anlege und Ctrl+Shift+C erzeuge, dann wird die Implementierung exakt gleich angelegt.

Dann werde ich die Köpfe der betroffenen Implementierungen eben anpassen.

Antworten