Добавил:
Mendeleev
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
(* getlist - РТПГЕДХТБ ДМС РПМХЮЕОЙС УРЙУЛБ ЖБКМПЧ Ч ЛБФБМПЗЕ *)
uses stdio, strings;
const
MAXLEN=255; (* нБЛУЙНБМШОБС ДМЙОБ ЙНЕОЙ ЖБКМБ *)
MAXCMD=100; (* нБЛУЙНБМШОБС ДМЙОБ ЛПНБОДЩ *)
ERROR=-1;
SUCCESS=0;
type
sarray=array [0..MAXLEN] of char;
darray=array [0..MAXCMD] of sarray;
function getlist(namepart:pchar; var dirnames:darray; maxnames:integer):integer;
var
cmd:array [0..MAXCMD] of char;
in_line:array [0..MAXLEN+1] of char;
i:integer;
lsf:pfile;
begin
(* пУОПЧОБС ЛПНБОДБ *)
strcopy(cmd, 'ls ');
(* дПРПМОЙФЕМШОЩЕ РБТБНЕФТЩ ЛПНБОДЩ *)
if namepart <> nil then
strlcat(cmd, namepart, MAXCMD - strlen(cmd));
lsf := pipeopen(cmd, 'r'); (* ъБРХУЛБЕН ЛПНБОДХ *)
if lsf = nil then
begin
getlist:=ERROR;
exit;
end;
for i:=0 to maxnames-1 do
begin
if fgets(in_line, MAXLEN+2, lsf) = nil then
break;
(* хДБМСЕН УЙНЧПМ РЕТЕЧПДБ УФТПЛЙ *)
if in_line[strlen(in_line)-1] = #$a then
in_line[strlen(in_line)-1] := #0;
strcopy(dirnames[i], in_line);
end;
if i < maxnames then
dirnames[i][0] := #0;
pipeclose (lsf);
getlist:=SUCCESS;
end;
var
namebuf:darray;
i:integer;
begin
getlist('*.pas', namebuf, 100);
i:=0;
while namebuf[i][0]<>#0 do
begin
writeln(namebuf[i]);
inc(i);
end;
end.
uses stdio, strings;
const
MAXLEN=255; (* нБЛУЙНБМШОБС ДМЙОБ ЙНЕОЙ ЖБКМБ *)
MAXCMD=100; (* нБЛУЙНБМШОБС ДМЙОБ ЛПНБОДЩ *)
ERROR=-1;
SUCCESS=0;
type
sarray=array [0..MAXLEN] of char;
darray=array [0..MAXCMD] of sarray;
function getlist(namepart:pchar; var dirnames:darray; maxnames:integer):integer;
var
cmd:array [0..MAXCMD] of char;
in_line:array [0..MAXLEN+1] of char;
i:integer;
lsf:pfile;
begin
(* пУОПЧОБС ЛПНБОДБ *)
strcopy(cmd, 'ls ');
(* дПРПМОЙФЕМШОЩЕ РБТБНЕФТЩ ЛПНБОДЩ *)
if namepart <> nil then
strlcat(cmd, namepart, MAXCMD - strlen(cmd));
lsf := pipeopen(cmd, 'r'); (* ъБРХУЛБЕН ЛПНБОДХ *)
if lsf = nil then
begin
getlist:=ERROR;
exit;
end;
for i:=0 to maxnames-1 do
begin
if fgets(in_line, MAXLEN+2, lsf) = nil then
break;
(* хДБМСЕН УЙНЧПМ РЕТЕЧПДБ УФТПЛЙ *)
if in_line[strlen(in_line)-1] = #$a then
in_line[strlen(in_line)-1] := #0;
strcopy(dirnames[i], in_line);
end;
if i < maxnames then
dirnames[i][0] := #0;
pipeclose (lsf);
getlist:=SUCCESS;
end;
var
namebuf:darray;
i:integer;
begin
getlist('*.pas', namebuf, 100);
i:=0;
while namebuf[i][0]<>#0 do
begin
writeln(namebuf[i]);
inc(i);
end;
end.
Соседние файлы в папке 11