Показать сообщение отдельно
  #13  
Старый 23.01.2011, 22:52
Эллурн Эллурн вне форума
Прохожий
 
Регистрация: 26.04.2010
Сообщения: 12
Репутация: 10
По умолчанию

Путем кучи изменений, лог которых не остался в моей памяти, у меня получилось это) И, естественно, благодаря вашему совету
Однако, вот такая теперь ситуация: в основной программе, после того, как я принимаю значение 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 указывает уже не на тот адрес, на который указывал при выделении памяти. Соответственно, освободить память не получится.
Ответить с цитированием