Einzelnen Beitrag anzeigen

Bodenseematze

Registriert seit: 10. Jul 2023
68 Beiträge
 
#4

AW: Konstruktor-Aufruf "Too many actual parameters" - warum?

  Alt 13. Jul 2023, 14:00
In Delphi 7 auch. Da fehlt ein komplettes reproduzierbares Beispiel.

Vielleicht wird die falsche Unit verwendet oder ähnliches.
Sowas in der Art muss es wohl sein - ich habe schon 'zig Klassen in der Art ohne Probleme definiert, nur hier macht es komischerweise Probleme.
Ich hatte zuerst die Ableitung von TPersistent im Verdacht, aber das mache ich an anderen Stellen auch

Interessanterweise zeigt mir die kontextabhängige Hilfe bei der Eingabe des Punktes nach "TMyClass" alle drei Create-Methoden an, wenn ich dann aber das "Create" hingeschrieben habe und die "(" eingebe (also insgesamt "TMyClass.Create("), wird nur noch "*No parameters expected*" angezeigt...


Hier habe ich es versucht, nachzuvollziehen in einem Mini-Projekt, bestehend aus zwei Units:
Unit1.pas:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,
  Unit2;


type
  TForm1 = class(TForm)
  protected
    procedure DoCreate(); override;
  end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DoCreate();
var
   test : TMyClass;
begin
   test := TMyClass.Create( 0.20, 1 );
end;


end.
Unit2.pas:
Delphi-Quellcode:
unit Unit2;

interface

uses Classes;

type
TMyClass = class( TPersistent )
public
   constructor Create( dVal_ : Extended;
                                    iDigits_ : ShortInt ); overload; virtual;
   constructor Create( dVal_ : Extended ); overload; virtual;

protected
   constructor Create(); overload; virtual;
end;

implementation

constructor TMyClass.Create( dVal_ : Extended;
                                    iDigits_ : ShortInt );
begin
   Create();
end;


constructor TMyClass.Create( dVal_ : Extended );
begin
   Create();
end;


constructor TMyClass.Create();
begin
   inherited Create();
end;


end.
Project1.dpr:
Delphi-Quellcode:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas{Form1},
  Unit2 in 'Unit2.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
  Mit Zitat antworten Zitat