Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#1

Override wird nicht akzeptiert unter D11

  Alt 10. Sep 2021, 21:32
Delphi-Version: 5
Ich habe ein Problem seit D11. War unter 10.4 nicht so!
Was soll denn da Unterschiedlich sein?

Delphi-Quellcode:
function TJsonBytesStream.Realloc(var NewCapacity: Longint): Pointer;
var
  L: Longint;
begin
  // bla, bla
end;
Delphi-Quellcode:
  {$IFDEF SUPPORTS_UTF8STRING}
  TJsonUTF8StringStream = class(TMemoryStream)
  private
    FDataString: UTF8String;
  protected
    function Realloc(var NewCapacity: Longint): Pointer; override;
  public
    constructor Create;
    property DataString: UTF8String read FDataString;
  end;
  {$ENDIF SUPPORTS_UTF8STRING}

  TJsonBytesStream = class(TMemoryStream)
  private
    FBytes: TBytes;
  protected
    function Realloc(var NewCapacity: Longint): Pointer; override;
  public
    constructor Create;
    property Bytes: TBytes read FBytes;
  end;
Zitat:
[dcc64 Fehler] JsonDataObjects.pas(1081): E2037 Deklaration von 'Realloc' unterscheidet sich von vorheriger Deklaration
Deaktiviere ich override kommt die Warnung[dcc64 Warnung]
Zitat:
JsonDataObjects.pas(1092): W1010 Methode 'Realloc' verbirgt virtuelle Methode vom Basistyp 'TMemoryStream'
So würde es gehn..
function Realloc(var NewCapacity: Longint): Pointer; reintroduce; overload;

Welcher Unterschied ist aber nun zur vorherigen version? bzw. welche Auswirkungen hat das?
function Realloc(var NewCapacity: Longint): Pointer; override;

So wie ich das verstehe habe ich ja 2 die gleichen functionen..
Einmal für UTF8String und einmal ohne deshalb muß diese überschrieben werden damit ich beide abhängig vom UTF8String verwenden kann.
Ist das mit reintroduce; overload; überhaupt noch gewährt?

Warum wurde override unter 10.4 anstandslos akzeptiert?

Geändert von venice2 (10. Sep 2021 um 21:49 Uhr)
  Mit Zitat antworten Zitat