Wie wäre es denn mit Interfaces?
@hanvas: von genau diesen (vielen) Fallunterscheidungen im eigentlichen Programmcode möchte ich ja weg. Ich möchte quasi etwas mehr Programmlogik vom Anwendungscode in die Library verschieben.
Im Grunde ist die Unterscheidung zwischen meiner Lösung und der Verwendung von Interfaces reine Semantik. Sie sind äquivalent.
Zitat:
Dann müsste ich mich während des Auslesens der Metadaten aus einer Datei vor Erstellung des jeweiligen TTagItems entscheiden, welche konkrete Klasse ich da instanziieren will/muss.
So wars gedacht. Aber egal ob Interfaces oder Objekte, in jedem Fall könntest Du die Fallunterscheidung in die Methode GetAllTagItems verschieben wenn du einen zweiten Paramter als Filter einführst :
Delphi-Quellcode:
TagList := TTagItemList.Create;
try
aAudioFile.GetAllTagItems(TagList, TTextIDTag);
for var tag : TTextIDTag in TagList do
begin
text := tag.GetText()
machWasMitText(text)
tag.SetText(Text);
end;
finally
TagList.Free;
end;
das würde Dir dann auch
Zitat:
Eine Variante procedure GetAll_Text_TagItems(dest: TTagItemList); wird es natürlich auch geben
ersparen. Du hättest es dann ja schon.
cu Ha Jo