AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Frage zu Generics in generischen Listen

Ein Thema von Catweasel77 · begonnen am 5. Mai 2019 · letzter Beitrag vom 7. Mai 2019
 
Catweasel77

Registriert seit: 29. Apr 2019
9 Beiträge
 
#12

AW: Eine Frage zu Generics in generischen Listen

  Alt 7. Mai 2019, 15:29
@Rudy Velthuis

Zitat:
Das tust du ja gar nicht. Deine einzige typ-abhängige Methode wird für jeden Typ neu geschrieben
Hmm.. Das ist der Teil der nur einmal geschrieben ist:

Delphi-Quellcode:
{ TDataTypeGeneric<TDataType> }


function TDataTypeGeneric<TDataType>.GetData: TDataType;
begin
Result := FData;
end;

procedure TDataTypeGeneric<TDataType>.LoadFromStream(AStream: TFileStream);
begin
AStream.Read(FData,SizeOf(FData));
end;

procedure TDataTypeGeneric<TDataType>.SaveToStream(AStream: TFileStream);
begin
AStream.Write(FData,SizeOf(FData));
end;

procedure TDataTypeGeneric<TDataType>.SetData(const Value: TDataType);
begin
FData := Value;
end;
Lediglich eine Methode fuer die Stringumwandlung ist ueberschrieben, weil das eben fuer jeden Typ unterschiedlich ist.

Delphi-Quellcode:
{ TIntegerClass }

function TIntegerClass.GetVString: string;
begin
Result := IntToStr(FData);
end;


{ TFloatClass }

function TFloatClass.GetVString: string;
begin
Result := FloatToStr(FData);
end;


{ TBooleanClass }

function TBooleanClass.GetVString: string;
begin
Result := BoolToStr(FData,true);
end;
Bei der StringKlasse musste ich noch die Stream Methoden ueberschreiben wegen dem "PChar()^" anstelle von einfach nur "FData"..


Delphi-Quellcode:
{ TStringClass }

function TStringClass.GetVString: string;
begin
Result := FData;
end;

procedure TStringClass.LoadFromStream(AStream: TFileStream);
var
size : longint;
begin
AStream.Read(size,SizeOf(size));
setlength(FData,size div SizeOf(char));
AStream.Read(PChar(FData)^,size);
end;

procedure TStringClass.SaveToStream(AStream: TFileStream);
var
size : longint;
begin
size := length(FData) * SizeOf(char);
AStream.Write(size,SizeOf(size));
AStream.Write(PChar(FData)^,size);
end;
Wie wolltest du denn den Data property getter und setter fuer beliebige Typen ohne Generics implementieren??
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz