Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete"

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mario Peters
Beiträge: 37
Registriert: Sa 26. Apr 2025, 22:41

Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete"

Beitrag von Mario Peters »

Hallo!

Ich steh grad auf dem Schlauch!

Habe diesen Algotithmus:

function TMyClipBoard.DoGetText: String;
var DelIndex: Integer;
begin
DelIndex := FClipBoard.Count-1;
FClipBoardText := FClipBoard[DelIndex];
TStringList(FClipBoard.Delete[DelIndex]); //Hier wirft der Compiler die Meldung
result := FClipboardText;
end;

Was mache ich da falsch?

Ich will die Clipboardeinträge nach ihrer Verwendung aus der Liste löschen. Was kann ich stattdessen tun? Ich verstehe nicht warum das nicht funktioniert. Ich trage die Strings in meine Zwischenablage ein, um sie zwischenzuspeichern und will sie bei Bedarf, zum Kopieren an andere Stelle wieder verwenden und nach Benutzung aus der Zwischenablage entfernen.

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

Re: Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete

Beitrag von theo »

Es wäre ganz gut, wenn du die Deklaration von FClipBoard angeben würdest.
Dieses "Casting" macht auch keinen Sinn:

Code: Alles auswählen

TStringList(FClipBoard.Delete[DelIndex]); 
Aber hauptsächlich verwendest du eckige Klammern. Das ist falsch. Es ist eine Procedure. So geht's bestimmt:

Code: Alles auswählen

FClipBoard.Delete(DelIndex);      
Vielleicht mal einen Kaffee trinken? :lol:

Mario Peters
Beiträge: 37
Registriert: Sa 26. Apr 2025, 22:41

Re: Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete

Beitrag von Mario Peters »

Mein Clipboard ist do hier definert:

Code: Alles auswählen

 TfpgClipboardImpl     = class(TfpgClipboardBase)       //genau hinschauen
  private
    FClipBoardText: TfpgString;
    FClipboard: TStrings;
    function    DoGetText: TfpgString; override; 
    procedure   DoSetText(const AValue: TfpgString); override;
    procedure   InitClipboard; override;
  public
    property Text: TfpgString read DoGetText write DoSetText;
    property ClipBoardText: TfpgString read FClipBoardText write FClipBoardText;
    property ClipBoard: TStrings read FClipBoard write FClipBoard;
  end;
 

function  TfpgClipBoardImpl.DoGetText: TfpgString;
var DelIndex: Integer;
begin
  DelIndex := FClipBoard.Count-1;
  FClipBoardText := FClipBoard[DelIndex];
  FClipBoard.Delete(DelIndex); // Auch das löst mein Problem nicht
  result := FClipboardText;
end;

procedure TfpgClipBoardImpl.DoSetText(const AValue: TfpgString);
begin
  if FClipboardText <> AValue then
  begin
   FClipBoardText := AValue;
   FClipBoard.Add(FClipboardText);
  end; 
end;

procedure TfpgClipBoardImpl.InitClipboard;
begin
  FClipBoardText := '';
  FClipBoard := TStringlist.Create;
end;


Was soll ich denn da nun anders machen?  :(
Zuletzt geändert von Mario Peters am Mi 10. Dez 2025, 13:52, insgesamt 1-mal geändert.

Benutzeravatar
Zvoni
Beiträge: 489
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete

Beitrag von Zvoni »

Mario Peters hat geschrieben: Mi 10. Dez 2025, 13:43

Code: Alles auswählen

 TfpgClipboardImpl     = class(TfpgClipboardBase)       //genau hinschauen
  private
    FClipBoardText: TfpgString;
    FClipboard: TStrings;
    function    DoGetText: TfpgString; override; 
    procedure   DoSetText(const AValue: TfpgString); override;
    procedure   InitClipboard; override;
  public
    property Text: TfpgString read DoGetText write DoSetText;
    property ClipBoardText: TfpgString read FClipBoardText write FClipBoardText;
    property ClipBoard: TStrings read FClipBoard write FClipBoard;
  end;
 

function  TfpgClipBoardImpl.DoGetText: TfpgString;
var DelIndex: Integer;
begin
  DelIndex := FClipBoard.Count-1;
  FClipBoardText := FClipBoard[DelIndex];
  FClipBoard.Delete(DelIndex); // Auch das lost mein Problem nicht
  result := FClipboardText;
end;
Was soll ich denn da nun anders machen? :(
FClipBoard.Delete(DelIndex); // Auch das lost mein Problem nicht
Das ist jetzt aber anderst als vorher.
Und welchen Fehler bekommst du hier?

Ausserdem sieht mir der ganze Zinnober doch sehr nach nem "Stack" aus....

EDIT: Ist das fpGUI????
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Mario Peters
Beiträge: 37
Registriert: Sa 26. Apr 2025, 22:41

Re: Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete

Beitrag von Mario Peters »

Ja ist fpGUI! Ich kriege den besagten Compiler Fehler! Warum? Wie könnte ich so ein Clipboard noch coden?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7032
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete

Beitrag von af0815 »

Mario Peters hat geschrieben: Mi 10. Dez 2025, 14:21 Ja ist fpGUI! Ich kriege den besagten Compiler Fehler! Warum? Wie könnte ich so ein Clipboard noch coden?
Schon angesehen, wie dieses "Delete" im Source aussieht ?! Weil dorthin springen müsste man ja können und sich die Deklaration ansehen und somit auch eine eventuell vorhandene Überladung.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Zvoni
Beiträge: 489
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete

Beitrag von Zvoni »

af0815 hat geschrieben: Mi 10. Dez 2025, 14:23
Mario Peters hat geschrieben: Mi 10. Dez 2025, 14:21 Ja ist fpGUI! Ich kriege den besagten Compiler Fehler! Warum? Wie könnte ich so ein Clipboard noch coden?
Schon angesehen, wie dieses "Delete" im Source aussieht ?! Weil dorthin springen müsste man ja können und sich die Deklaration ansehen und somit auch eine eventuell vorhandene Überladung.
Sein "Delete" gehört zu FClipBoard, was ein TStrings/TStringList ist.
https://www.freepascal.org/docs-html/rt ... elete.html
https://www.freepascal.org/docs-html/rt ... elete.html
Ergo ist das hier richtig:
FClipBoard.Delete(DelIndex); // Auch das lost mein Problem nicht

Nur was ist jetzt da das Problem?

Und ich verstehe nicht, wieso er in fpGUI-Internen Klassen rumpfuscht
https://fpgui.sourceforge.net/apidocs/f ... board.html
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

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

Re: Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete

Beitrag von theo »

Mario Peters hat geschrieben: Mi 10. Dez 2025, 13:43

Code: Alles auswählen

  FClipBoard.Delete(DelIndex); // Auch das löst mein Problem nicht
Ich bin mir ziemlich sicher, dass dies dein Problem löst.
Vielleicht hast du noch ein zusätzliches Problem, aber kaum mit der selben Fehlermeldung an der selben Stelle.

Mario Peters
Beiträge: 37
Registriert: Sa 26. Apr 2025, 22:41

Re: Compilerfehler bei TStringList: fpg_intf.pas(787,26) Error: Wrong number of parameters specified for call to "Delete

Beitrag von Mario Peters »

Ja, tut es jetzt auch, hatte Schreibfehler. Danke für die Hilfe. :?

Antworten