Вот вариант со стандартным, если лень как у sla8a делать.
Вроде работает:
Во всех этих |13| массивах - это указатели на звук, картинку, стрим, строку, или ещё чего - чего загрузишь.
Каким методом ты будешь обрабатывать этот указатель - по хрену. В данном случае, как список строк.
Прописывай свойство как|13|10
Вот так будет выглядеть hiStrlistArray.pas
THIStrlistArray = class(TArray)
private
procedure PointerToData(Data:cardinal; var Result:TData); override;
procedure Delete(Value:cardinal); override;
public
procedure _work_doRun(var _Data:TData; Index:word);
property _prop_Strlist:PStrListEx write SetItems;
end;
implementation
procedure THIStrlistArray.PointerToData;
begin
dtString(Result,String(pointer(Data)^));
end;
procedure THIStrlistArray.Delete;
var r:^string;
begin
r := pointer(Value);
dispose( r );
end;
procedure THIStrlistArray._work_doRun;
var dt:TData;
begin
if Read(_Data,dt) then
.......
end;
end.
а вот так будет выглядеть StrlistArray.ini
[About]
Version=1.0
Author=flint2
Mail=qwerty.ru
[Type]
Class=Element
Info=Содержит массив списков строк
[Property]
+Strlist=Содержит массив списков строк|13|10
UseName=True - разрешить доступ к элементам массива по их именам и по индексам, False - доступ только по индексам (быстрый)|14|0|True,False
FileFormat=Формат файла массива|4|0|Binary,String
[Methods]
doRun=Чего то делает со списком строк из массива с индексом из потока (см. св-во UseName)|1|
Count=Содержит кол-во элементов массива|3|1
P.S.
Я для этих целей( не в данном случае, а когда то давно) переделывал StrList на List Pchar (с нулём на конце), каждая такая строка могла иметь множество строк разделённых символами 10 и 13.