Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi wieso overload? (https://www.delphipraxis.net/143406-wieso-overload.html)

RaSoWa1 15. Nov 2009 12:30


wieso overload?
 
Hallo,

ich bin jetzt dabei meine Projekte von D6 nach D2010 zu portieren.
Wieso meldet D2010: "[DCC Fehler] xxxUnit1.pas(15): E2254 Die überladene Prozedur 'xxxDeleAllFiles' muss mit der Direktive 'overload' gekennzeichnet sein" bei folgenden Code:
Delphi-Quellcode:
unit xxxUnit1;

interface

uses ToolDef;

function xxxDeleAllFiles(Path, Mask: string; AllVerz, DeleSubDir, ToPapierkorb: boolean; WaitProc: TProc = nil): boolean; overload;

implementation

uses SysUtils,
     ToolFile;


function xxxDeleAllFiles(Path, Mask: string; AllVerz, DeleSubDir, ToPapierkorb: boolean; WaitProc: TProc = nil): boolean;
var Find  : integer;
    SR    : TSearchRec;
    fn    : string;
begin
  result := False;
  Path := PathToFilename(Path, '');
  Find := FindFirst(Path+Mask, faAnyFile-faDirectory, SR);
  while Find = 0 do begin
    if (SR.Name <> '.') and (SR.Name <> '..')
    then begin
      fn := PathToFileName(Path, SR.Name);
      if (SR.Attr and SysUtils.faReadOnly) <> 0                  // geschützte Datei?
      then begin
        FileSetAttr(fn, SR.Attr and not(SysUtils.faReadOnly)); // schreibschutz entfernen
        DeleFileToPapierkorb(fn);                              // und in Papaierkorb löschen
        end
      else
        if ToPapierkorb
        then DeleFileToPapierkorb(fn)
        else DeleteFile(fn);
      result := True;
      if (@WaitProc <> Nil)
      then WaitProc;
      end;
    Find := FindNext(SR);
    end;
  FindClose(SR);
  if AllVerz
  then begin
    Find := FindFirst(Path+'*.*', faDirectory, SR);
    while Find = 0 do begin
      if (SR.Name <> '.') and (SR.Name <> '..')
          and (SR.Attr and faDirectory > 0)
      then begin
        fn := Path+SR.Name+'\';
        result := xxxDeleAllFiles(fn, Mask, True, DeleSubDir, ToPapierkorb) or result;
        if DeleSubDir and result
        then RemoveDir(fn);
        end;
      Find := FindNext(SR);
    end;
    FindClose(SR);
    end;
end;

end.
Ich habe extra xxx vorangestellt, damit die Funktion eindeutig ist. Es gibt nirgendwo eine Methode mit gleichen Namen. Was soll Überladen werden?

Gruß Klaus

mkinzler 15. Nov 2009 12:36

Re: wieso overload?
 
Vielleicht weil du diese Function inn Zeile 7 so deklariert hast?

turboPASCAL 15. Nov 2009 12:39

Re: wieso overload?
 
@SirT, Die steht doch in der interface-Klausel also für den Export. :gruebel:

//Edit:
Also das overload sollte da weg. Oder wurde es hinzugefügt weil Delphi dort meckert ?

Apollonius 15. Nov 2009 12:39

Re: wieso overload?
 
Es könnte sein, dass TProc in einer der im Implementation-Abschnitt eingebundenen Units neu definiert wird. Du müsstest dann in der Definition den Bezeichner TProc durch DeklarierendeUnit.TProc qualifizieren.

RaSoWa1 15. Nov 2009 12:51

Re: wieso overload?
 
Danke,

das TProc war es.

(das Overload ist nur ein vergessenes Überbleibsel vom vielen testen)


Gruß Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz