Да, нужно. Но тут, на самом деле, несколько ошибок. Начнем с того, что тут несоответствие форматов в функции.
function IC_searchscan(Adbn,Asexp: Pchar; Anumb,Afirst: integer; Aformat: Pchar; Amin,Amax: integer; Aseq: Pchar; answer: Pchar; abufsize: integer): integer;
В функции база, прямой и последовательный запросы, формат передаются как Pchar, а вы используете string.
Вот пример из работающей программы
var
retval : integer;
Adbn : Pchar;
Asexp : Pchar;
Anumb : integer;
Afirst : integer;
Aformat : Pchar;
Amin : integer;
Amax : integer;
Aseq : Pchar;
mas : TStringList.Create;
begin
{
Регистрация на сервере Ирбиса, прочие нужные действия
}
GetMem(answer,buffer); //Выделяем память для буфера
Asexp := #0; //Пустая строка, так как прямой поиск сейчас не используется
Anumb := 0;
Afirst := 1;
Aformat := '@exportfoto'; //Имя файла формата, который используется для расформатирования найденных записей
Amin := 0;
Amax := 0;
Aseq := 'if v954='+#39+'1'+#39+' and v950<>' + #39 + #39 +' then '+#39+'1'+#39+' else '+#39+'0'+#39+' fi'; //"сборка" поискового запроса. #39 используется для вставки в текст в этом месте одинарной кавычки. Другими словами, этот формат соответствует следующему: if v954='1' and v950<>'' then '1' else '0' fi
retval := IC_searchscan(Adbn,
Asexp,
Anumb,
Afirst,
Aformat,
Amin,
Amax,
Aseq,
answer,
buffer);
mas := TStringList.Create;
mas.Text := utf8toansi(answer);//Результат выполнения функции преобразуем из УТВ8 в АНСИ и заносим в переменную типа TStringList
FreeMem(answer); //Освобождаем память
Редактировано 1 раз. Последний раз 13.02.2014 07:16 пользователем Gena.