Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
ВнизПроблемы с переменной типа TSearchRec Найти похожие ветки
← →
Артем (2003-12-03 19:44) [0]Уважаемые Мастера!
Помогите, пожалуйста, решить следующую проблему. При вызове процедуры findclose(SRec) генерируется ошибка №113:Incompatible types:"Cardinal" and "TSearchRec". Понятно, что они не совместимы, но причем здесь вообще тип Cardinal, если переменная SRec:TSearchRec ?
Заранее всем благодарен.
← →
Maxud (2003-12-03 19:48) [1]Ошибка, скорее всего, не здесь. Приведи код.
← →
me (2003-12-03 20:08) [2]Скорее всего не та FindClose вызывается, что нужно: в модуле Windows описана функция с таким же названием
function FindClose(hFindFile: THandle): BOOL
Вот она видимо и вызывается с параметром типа TSearchRec. Стало быть нужно уточнить имя, вызываяя ее так:
SysUtilsюFindClose(...)
← →
Артем (2003-12-03 22:20) [3]Вообще все было нормально, все работало. Но после усложнения механизма поиска(конкретно, поиск по дате создания,открытия файла и т.д.) вылез такой баг. Даже не знаю что делать...
← →
Артем (2003-12-03 22:26) [4]А вот чатично код:
Var
SRec:Tsearchrec;
retval: Integer;
oldlen: Integer;
today,filedate,fs:TDateTime;
filetime:TFileTime;
systime:TSystemTime;
y,y2,m,m2,d,d2:Word;
Begin
Recurse := True;
oldlen := Length( path );
retval := FindFirst( path+mask, faAnyFile, SRec );
While retval = 0 Do Begin
If ((SRec.Attr and (faDirectory or faVolumeID)) = 0)
and(srec.name[1]<>"~") Then begin
if ws=false then begin
srec2:=srec;
pathtofile:=path;
synchronize(add);end
ELSE BEGIN
if fwh=0 then begin {файлы,созданные}
if fhow=0 then begin {за последние...дней}
today:=date;
FileTimeToLocalFileTime(srec.FindData.ftcreationtime,filetime);
filetimetosystemtime(filetime,systime);
filedate:=systemtimetodatetime(systime);
decodedate(today,y,m,d);
d:=d-fkold;
if d>0 then begin
fs:=encodedate(y,m,d);
if (filedate>=fs)and(filedate<=today) then begin
srec2:=srec;
pathtofile:=path;
synchronize(add);
end;
end;
end;
………………………
end;
END;
end;
retval := FindNext( SRec );
End;
FindClose(SRec);
← →
Anatoly Podgoretsky (2003-12-03 22:30) [5]Это от того, что ты сменил порядок подключения модулей.
← →
panov (2003-12-03 22:31) [6]srec2:=srec; в двух местах - это что?
← →
Артем (2003-12-04 07:41) [7]Anatoly, а каких именно? Как Вы думаете?
Panov, srec-внутренняя переменная, srec2-глобальная
← →
Anatoly Podgoretsky (2003-12-04 08:51) [8]Windows, SysUtils
Но не надо зависить от порядка объявления модулей, надо просто использовать квалифицированое обращение.
← →
Артем (2003-12-04 19:35) [9]Вот действительно досада, Anatoly, вся моя проблема в том, что в модуле потока windows подключил самым последним...Спасибо Вам за помощь в решении столь нелепой ошибки, Anatoly.
← →
Anatoly Podgoretsky (2003-12-04 20:19) [10]Порядок модулей это не ошибка, а ошибка в том, что неиспользовано квалифицированое имя, хорошо, что здесь параметры различаются, а в другом случае это катастрофа, найти фефект будет сложно.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c