Du willst einfach nicht in Objekten bzw. Klassen denken.
(Mein letzter Versuch)
Die Klasse TStrings bzw. TStringList bringt schon alles mit, um eine Liste von Namen zusammen mit weiteren Daten (=Objekte) zu verwalten.
Bitte kein Array verwenden.
Es gibt 2 Klassen:
1.) eine ganz einfache Klasse, die die Daten aufnimmt.
Pro Wert gibt es ein Property oder Member-Variable.
Delphi-Quellcode:
TInstrument =
class(TObject)
public
Name :
string;
ProgrammNo: integer;
SchlagInstr: Boolean;
procedure LoadFromCSV(
const line:
string);
// befüllt die Werte aus einem CSV-String
end;
Es ist hier nicht einmal notwendig, echte Properties einzuführen, da die Klasse "intern" verwendet wird und nicht unbedingt diesen Schutz benötigt.
2.) eine Ableitung von TStringList
Delphi-Quellcode:
TInstrumentList = class(TStringList)
public
procedure AddInstrument(instr : TInstrument);
procedure FreeInstruments;
procedure LoadInstrumentsFromFile(const filename:string);
end;
procedure TInstrumentList.AddInstrument(instr : TInstrument);
begin
AddObject(instr.Name, instr);
end;
procedure TInstrumentList.FreeInstruments;
var i : integer;
begin
for i := Count-1 downto 0 do
begin
Objects[i].Free;
delete(i);
end;
end;