Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

Проблемы с переменной типа 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
3-52110
softmaster
2003-11-23 10:17
2003.12.16
Станность с БД


3-52120
MORA
2003-11-23 00:04
2003.12.16
MS


3-52092
Sanya.
2003-11-24 14:34
2003.12.16
Как раскрасить Dbgrid в несколько цветов?


14-52379
LOX
2003-11-22 12:55
2003.12.16
SUPERWallpaper


4-52445
Kair()
2003-10-22 09:20
2003.12.16
EnumChildWindows