Путем кучи изменений, лог которых не остался в моей памяти, у меня получилось это) И, естественно, благодаря вашему совету
Однако, вот такая теперь ситуация: в основной программе, после того, как я принимаю значение Pchar, происходит следующее:
Код:
p:=HeaderLoad(strtoint(uid.caption), len, hcount); //Вызов ф-ции из dll
.........
p1:=AllocMem(len);
p1:=p;
setlength(harray, hcount);
i:=0;
ii:=0;
repeat
if p1^<>#1 then
begin
harray[i]:=harray[i]+p1^;
inc(p1);
ii:=0;
end
else
begin
inc(i);
inc(ii);
inc(p1);
end;
until ii=2;
Хотел для удобства воспользоваться типом String, однако после небольшой проверки выяснилось, что туда может поместиться только весьма ограниченное количество записей (в среднем около нескольких десятков в то время, как мне нужны в среднем сотни).
Как мне освободить память, выделенную строкой
p1:=AllocMem(len);? Другого способа "вытащить" строки из
P, кроме как перебором по 1 символу, я не вижу, а если делать так, то указатель
P1 указывает уже не на тот адрес, на который указывал при выделении памяти. Соответственно, освободить память не получится.