IPB
ЛогинПароль:

> работа с файлами через fp в win, path -> SearchRec
compiler
сообщение 9.04.2008 21:43
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Добрый день!
Надо написать утилитку на работу с файлами, но никак не получается ...
Вопрос в следующем: как имея адрес файла получить его "SearchRec", в частности Attr...
заранее благодарен.


OS: winXP.
компилятор: fpc 2.2.0, mode objfpc.
библиотеки: dos.


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 10.04.2008 18:33
Сообщение #2


Гость






Цитата
я не понял зачем этот параметр
У тебя GetDir возвращает текущую директорию... ГДЕ? На каком диске? Это и указывается первым параметром процедуры... При передаче 0 ты получишь текущую папку на диске, с которого запускалась программа, чтобы получить это для D:, надо передать 4...

Хм... Так тебе что, рекурсивный поиск по всему диску с проверкой всех файлов, надо? Тогда поправляй процедуры вот так:

// здесь readln-ы я убрал, чтоб не щелкать по enter-у постоянно...
function ifread(const str:string):boolean;
var
f: file;
begin
ifread:=false;
if not ifdir(str) then begin
assign(f, str); // Почему у тебя была СТРОКА 'str', а не ее содержимое?
{$I-} reset(f); {$I+}
if IOResult <> 0 then begin
writeln('-', str);
end
else begin
ifread := true;
writeln('+', str);
end;
end;
end;

procedure getunread(const fw: string);
var
sr: SearchRec;
begin
ifread(fw);
chdir(fw);

FindFirst('*.*', AnyFile, sr);
while DosError = 0 do begin

if (sr.name <> '.') and (sr.name <> '..') then begin

if (sr.attr and directory = directory) then begin
getunread(fw + sr.name + slash);
end
else ifread(fw + getname(sr));

end;

FindNext(sr);

end;
end;

 К началу страницы 
+ Ответить 
compiler
сообщение 10.04.2008 21:14
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 10.04.2008 18:33) *
Хм... Так тебе что, рекурсивный поиск по всему диску с проверкой всех файлов, надо?
да, только не по всему, а начиная с текущей директории...

несколько вопросов по процедурам:
зачем
 if (sr.name <> '.') and (sr.name <> '..') then begin
?
где можна прочитать о сравнивании attr с directory? я об этом
 (sr.attr and directory = directory) 
наверно ifdir() тоже надо переписывать..

да, а с str баг получился)


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
compiler   работа с файлами через fp в win   9.04.2008 21:43
volvo   Ты про это: {$mode objfpc} uses dos; var Fi...   9.04.2008 21:50
compiler   Ты про это ?да, спасибо... только у меня возникает...   9.04.2008 22:17
volvo   DosError = 18 - значит "искомые файлы (при по...   9.04.2008 22:49
compiler   Огромное спасибо!   9.04.2008 23:05
compiler   вобщем написать то я написал и даже откомпилировал...   10.04.2008 16:21
volvo   Так... А теперь подробнее - что именно у тебя не п...   10.04.2008 17:14
compiler   Так... А теперь подробнее - что именно у тебя не п...   10.04.2008 17:23
volvo   Что значит "не удается прочитать"? Те фа...   10.04.2008 17:34
compiler   Что значит "не удается прочитать"? Те фа...   10.04.2008 17:47
volvo   У тебя GetDir возвращает текущую директорию... ГДЕ...   10.04.2008 18:33
compiler   Хм... Так тебе что, рекурсивный поиск по всему дис...   10.04.2008 21:14
volvo   да, только не по всему, а начиная с текущей директ...   10.04.2008 22:02
compiler   огромное спасибо, всё тайное стало явным... или не...   10.04.2008 22:38
volvo   Ты никогда в консоли не набирал DIR, и не видел ...   10.04.2008 23:05
compiler   Ты никогда в консоли не набирал DIR, и не видел ...   12.04.2008 18:34


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 14:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"