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?